我想已经有一段时间了,因为我已经编写了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

因此,加入questionquestion_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对问题的每组答案进行排序

麦可

最佳答案

order by q.question_id, qa.display_order

关于sql - SQL如何根据 “order”字段对子行进行排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45156119/

10-13 22:22