| id |reference_id|order_number
|---------------------------------
| 0741 | NULL | 000001
| 0519 | NULL | 000002
| 3814 | 0741 | 000003
| 8163 | 0741 | 000004
| 6102 | 0519 | 000005
|---------------------------------
现在我希望显示order_number排序的结果,但带有引用的行除外。 这些行应直接显示在原始订单下。
预期结果是:
| id |reference_id|order_number
|---------------------------------
| 0741 | NULL | 000001
| 3814 | 0741 | 000003
| 8163 | 0741 | 000004
| 0519 | NULL | 000002
| 6102 | 0519 | 000005
|---------------------------------
我之前在PHP中使用了两个单独的查询,但现在需要在SQL中使用它。 任何提示如何管理这个? 它甚至可能吗?
编辑: 我的解决方案是:
SELECT h1.id, h1.reference_id, h1.order_number
FROM test_order h1
LEFT JOIN test_order h2 on h2.reference_id = h1.id
ORDER BY coalesce(h2.order_number, h1.order_number), h1.order_number
答案 0 :(得分:0)
试试这个:
order by coalesce(reference_id, id), id