繁体   English   中英

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

[英]Query to retrieve main records in one table and its all sub records from another table

让我们假设我们有诸如问题和答案之类的表格

问题表

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

通常, 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

对于它的价值,我同意草莓的评论。 我实际上不会在我的应用程序中执行此操作。 我将以更简单的格式获取数据,并在我的应用程序代码中以所需的布局显示数据。

我上面的例子只是为了说明将数据处理到SQL中的布局中会使代码不太清晰。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM