查询以检索一个表中的主记录及其来自另一个表的所有子记录

时间:2017-11-26 02:15:40

标签: mysql

让我们假设我们有问题和答案的表格

问题表

qno question
1   first question
2   second question

答案表

ano qno answer
1   1   first answer for q1
2   1   second answer for q1
3   2   first answer for q2
4   1   third answer for q1
5   2   second answer for q2

现在我需要在mysql中使用单个查询来输出每个问题及其所有答案

预期输出

qno ano    question                      answer
--- ---    ----------                   -------------------
1    0   first question                   
1    1                                  first answer for q1
1    2                                  second answer for q1
1    4                                  third answer for q1
2    0   second question                
2    3                                  first answer for q2
2    5                                  second answer for q2

1 个答案:

答案 0 :(得分:0)

通常情况下,JOIN不会以您显示为所需结果的格式输出结果。 SQL中的JOIN运算符将一个表中的行与另一个表中的行匹配,因此它将重复生成question,这不是您想要的。

要获得您想要的内容,请使用UNION代替JOIN,并将其按照您的要求放置在列中:

(SELECT qno, 0, question, NULL AS `answer` FROM questions)
UNION
(SELECT qno, ano, NULL, answer FROM answers)
ORDER BY qno, ano

对于它的价值,我同意Strawberry的评论。我实际上不会在我的申请中这样做。我会以更简单的格式获取数据,并在我的应用程序代码中显示所需布局中的数据。

上面的例子只是表明在SQL中将数据操作到该布局会使代码不那么清晰。