从两个表中获取数据?

时间:2013-03-07 20:43:37

标签: mysql

我有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。

我该怎么做?

2 个答案:

答案 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 ......

类似的东西。