我已經搜索了SO的答案,但似乎我的具體情況只是有點不同於其餘的。另一個複雜的MySQL訂購
基本上,我的數據由一些帶有「位置」(RoR中的acts_as_list)的「主」記錄組成,然後是任意數量的帶custom_position的「自定義」記錄以反映主位置。所需的結果是檢索一個包含master1,custom1,...,master2,custom2 ...,
的包含master + custom記錄的集合master記錄將具有NULL custom_position;自定義記錄將具有等於其主人位置的custom_position。
源數據,未排序:
name sort_a sort_b ==== ====== ====== Lorem 1 NULL ipsum 2 NULL dolor 3 NULL Lorem foo 4 1 ipsum foo 5 2 dolor foo 6 3 Lorem bar 7 1 ipsum bar 8 2 dolor bar 9 3 Lorem duck 10 1 ipsum duck 11 2 dolor duck 12 3
所需的排序:
name sort_a sort_b ==== ====== ====== Lorem 1 NULL Lorem foo 4 1 Lorem bar 7 1 Lorem duck 10 1 ipsum 2 NULL ipsum foo 5 2 ipsum bar 8 2 ipsum duck 11 2 dolor 3 NULL dolor foo 6 3 dolor bar 9 3 dolor duck 12 3
最接近我已經得到: 爲了通過聚結(sort_a,sort_b)ASC
name sort_a sort_b ==== ====== ====== Lorem foo 4 1 Lorem bar 7 1 Lorem duck 10 1 Lorem 1 NULL ipsum foo 5 2 ipsum bar 8 2 ipsum duck 11 2 ipsum 2 NULL dolor foo 6 3 dolor bar 9 3 dolor duck 12 3 dolor 3 NULL
任何想法如何在ORDER BY子句中實現所需的排序?
檢查OP中最後列表中的第8行,Ipsum,2,NULL將最終在Lorem Foo的前面,4,1。不好。 –
@Ken Downs,也許Quassnoi修正了它,因爲測試查詢現在爲我返回正確的順序。 – jemminger
謝謝!這看起來很完美。 – jemminger