让我们假设我们有问题和答案的表格
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
答案 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中将数据操作到该布局会使代码不那么清晰。