如何在MySQL中使用多个条件对结果进行排序

时间:2013-06-29 17:46:29

标签: mysql sorting sql-order-by

我正在尝试建立一个存储调查,问题和答案的数据库 所以我可以动态生成调查,捕获答案并报告。

问题 如何按以下顺序对结果进行排序? 订购* surveys_questions.sort *但是,如果父ID是> 0然后我需要带下所有孩子,并通过* surveys_controls.sort *对孩子进行排序。

我有5张桌子:

  1. 调查表以保存每项调查的名称(家庭收入调查)
  2. “问题”表,用于存储调查中的所有问题。请注意parent_id列。这个曾经将在我想要提出子问题时使用
  3. 用于存储可用工具的表格。文本框,单选按钮,复选框....
  4. “答案”表
  5. 用于存储问题与相关工具之间关系的表。所以例如问题1将具有工具id 1(单选按钮)并且默认选择它...
  6. 现在我遇到的问题是我无法正确排序结果或答案。

    您可以在此链接上找到我的代码并运行查询 http://sqlfiddle.com/#!2/2ee97/1

    注意:我在此链接上创建了一个较小版本的问题 http://sqlfiddle.com/#!2/d9f6e3/4
    如果有人可以帮助他解决这个问题,那么我将使用相同的解决方案来解决实际问题。

1 个答案:

答案 0 :(得分:0)

尝试使用ORDER BY行:

ORDER BY CASE WHEN q.parent_id = 0 THEN q.question_id WHEN q.parent_id !=0 THEN q.parent_id = 0 END ASC, q.sort, t.sort

以下是 Fiddler