我有两张桌子:问题和测验。
小测验是一系列的问题。
问答表如下所示:
QuizdId x QuestionIds (NVARCHAR50)
1 | 1,2,3,4,5
2 | 6,7,8,9试题表的结构不相关。它的主键是ID (整数)
对于给定的问题Id,我希望选择所有的问题数据
此SQL不工作(会产生语法错误)。
SELECT qs.* FROM Questions AS qs
INNER JOIN Quiz AS qz on qs.ID IN (qz.QuestionIds)
WHERE qz.QuizId = 2;#1064 -您的SQL语法中有一个错误;检查与您的MySQL服务器版本对应的手册,以获得在“qz.QuestionIds”附近使用的正确语法,其中qz.QuizId =2
下面的SQL没有给出预期的结果。它只给出了一个ID为6的问题。我想原因是QuestionIds (在问答表中)是nvarchar字段,ID (在问题表中)是整数。
SELECT * FROM Questions WHERE ID IN (SELECT QuestionIds FROM Quiz WHERE QuizId = 2)我该怎么办?
我想通过SQL /过程/例程来提取它。
发布于 2013-08-17 19:55:59
您可以使用FIND_IN_SET()连接两个表,
SELECT qs.*
FROM Questions qs
INNER JOIN Quiz qz
ON FIND_IN_SET(qs.ID, qz.QuestionIDs) > 0
WHERE qz.QuizID = 2但我建议的方法是把你的桌子标准化成3桌的设计。
试题表
测验表
Quiz_Question表
如果您使用的是3表设计,则查询如下所示:
SELECT qs.*
FROM Questions qs
INNER JOIN Quiz_Questions qq
ON qq.QuestionID=qs.ID
WHERE qq.QuizID = 2https://stackoverflow.com/questions/18292760
复制相似问题