SQL如何根据“排序”对子行进行排序;订单“;领域
我想我写SQL已经有一段时间了,我被这个看似微不足道的要求难住了:我想将父表和子表连接在一起,并通过子表中名为“order”的字段对子列进行排序 假设您有一个SQL如何根据“排序”对子行进行排序;订单“;领域,sql,Sql,我想我写SQL已经有一段时间了,我被这个看似微不足道的要求难住了:我想将父表和子表连接在一起,并通过子表中名为“order”的字段对子列进行排序 假设您有一个问题表和一个问题_答案表: question ( question_id, question_text ) question_answer ( answer_id, question_id, answer_text, display_order ) 因此,每个问题都可以有多个答案,每个答案都有一个显示顺序字段 以下是一些数据的外观: qu
问题
表和一个问题_答案
表:
question ( question_id, question_text )
question_answer ( answer_id, question_id, answer_text, 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
因此,当加入问题
和问题/答案
时,所需的结果将显示问题及其每个答案,但这些答案将按给定的显示顺序
显示在问题答案中
一个简单的查询,例如
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\u顺序对结果集中的所有行进行排序
,而不是仅按问题的display\u顺序对每组答案进行排序
Michael按q排序。问题id,qa。显示顺序您需要按
您可以在order by子句中粘贴任意多的列。在
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
子句中使用逗号。使用此查询。这将首先按问题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
请尝试将q.question\u id添加到order by子句中,即,
order by q.question\u id,qa.display\u order
返回每个question\u答案重复的question
数据是次优的(因为您通过网络连接多次发送相同的数据)。考虑在批语句中执行两个查询,这些语句分别从答案中得到问题,但是因为它是批语句,不会有太多的颤动或延迟。该死,你打了我20秒。我想下次我得快点了:P