0
in mysql我有一個包含三列的表 - id,reference_id和order_number。 一個訂單可以使用主訂單的ID引用另一個訂單。 id中的值是散列值,訂單號由增量值創建。在mysql中使用特定條件和排序順序創建子查詢
| 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
感謝您的幫助。解決方法是: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 – Patrick