我有2张桌子。
一个人有疑问:
id | question
1 How old are you?
2 Are you male of female?
另一个考试:
id | title | question_ids
1 Summer Exam [1,2]
我的问题是,我想从考试表中选择一个考试,并获得与该特定考试相关的所有问题(question_ids字段),但是从问题表中获取问题而不仅仅是存储在question_ids。
我该怎么做?
答案 0 :(得分:0)
您可以使用FIND_IN_SET
命令。请注意,这不会使用您的索引,因此它可能很慢
SELECT title, question
FROM questions
INNER JOIN exams
ON FIND_IN_SET(questions.id, exams.question_ids)
您还可以使用IN
。请注意,这仅在选择特定考试时有效。如果不选择特定的考试,您将返回整个考试表中的question_ids列中引用的每个记录
SELECT title, question
FROM questions, exams
WHERE exams.id = 1
AND questions.id IN (question_ids)
答案 1 :(得分:0)
也许将问题表中的id列更改为q_id,将question_id更改为q_id,以便您可以清楚地链接表格。例如,将您的id列更改为exam_id,然后您的名称就不那么容易混淆了。然后你可以使用内部联接......
SELECT q.q_id, q.question, e.exam
FROM questions q
INNER JOIN exams e ON q.q_id=e.q_id
WHERE ......
类似的东西。