0

我有 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 中的 id。

我怎样才能做到这一点?

4

2 回答 2

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

类似的东西。

于 2013-03-07T20:54:40.953 回答
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)
于 2013-03-07T20:49:36.787 回答