我想已经有一段时间了,因为我写了SQL,我对这个看似微不足道的要求感到困惑:我想要将父表和子表连接在一起,并通过名为“order”的字段对子列进行排序儿童桌。
假设您有一个question
表和一个question_answer
表:
question ( question_id, question_text )
question_answer ( answer_id, question_id, answer_text, display_order )
因此,对于每个问题,可以有多个答案,每个答案都有一个display_order
字段。
以下是一些数据的外观:
question
--------
1, "How much milk should I add""
2, "About how fast was he going?"
question_answer
---------------
1, 1, "A little", 0
2, 1, "Moderate", 1
3, 1, "A lot", 2
4, 2, "Pretty slow", 0
5, 2, "Average", 1
6, 2, "Like a bat out of hell", 2
因此,加入question
和question_answer
时所需的结果会显示问题及其每个答案,但这些答案将在display_order
中给出,在问题的答案中
一个简单的查询,例如
select
q.question_text,
qa.answer_text
from
question q,
question_answer qa
where
q.question_id = qa.question_id
order by
qa.display_order
按display_order
对结果集中的所有行进行排序,而不是按display_order
迈克尔
答案 0 :(得分:4)
order by q.question_id, qa.display_order
答案 1 :(得分:2)
order by
中需要两个键:
select q.question_text, qa.answer_text
from question q join
question_answer qa
on q.question_id = qa.question_id
order by q.question_id, qa.display_order;
请注意,您应该学会使用正确的,明确的JOIN
语法。简单的规则:从不在FROM
子句中使用逗号。
答案 2 :(得分:0)
您需要按
订购您可以按照自己的顺序在order by子句中添加尽可能多的列。
答案 3 :(得分:0)
使用此查询。这将首先按question_id排序,然后按显示顺序排序。
select
q.question_text,
qa.answer_text
from
question q, question_answer qa
where
q.question_id = qa.question_id
order by
q.question_id, qa.display_order