簡體   English   中英

MySQL按ID排序,除非記錄具有parent_id

[英]MySQL Order by id, unless the record has a parent_id

我正在使用Laravel(當然還有MySQL)構建頁面模塊,一個頁面可以有1個父級

這是我當前的數據,並且使用order_by="id"也會這樣返回。

+----+-----------+
| id | parent_id |
+----+-----------+
|  1 | NULL      |
|  2 | NULL      |
|  3 | 1         |
|  4 | 1         |
+----+-----------+

現在,我想知道是否可能有一個結果集,將孩子們安排在其父母的下面。 這將導致以下結果

+----+-----------+
| id | parent_id |
+----+-----------+
|  1 | NULL      |
|  3 | 1         |
|  4 | 1         |
|  2 | NULL      |
+----+-----------+

思考

也許可以生成一個按id排序的order_by查詢,但如果該行具有parent_id,則在temp列之間(在其他列之間)分配一個臨時ID?

因此,理想情況下,正好在其下方顯示了父級(1)的2個子級(3,4)。

您可以使用coalesce功能:

ORDER BY coalesce(`parent_id`,`id`),`parent_id` is not null

PS ,parent_id is not null對於按VALUES(2,1),(1,null),(3,1),(4,1) (2,null)的順序插入(2,1)而不是(2,null)的情況,也需要,parent_id is not null VALUES(2,1),(1,null),(3,1),(4,1)特別感謝@ splash58

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM