[英]Postgres order entries by id, self reference id and date, after every parent, list childs
我的表orders
包含以下字段id
、 updated_at
、 self_ref_id
和其他不計算在內的字段。
self_ref_id
列是一個自引用兩個一個訂單,一個訂單可以有多個孩子,一個孩子不會有其他孩子。
我試圖通過updated_at desc
對所有條目進行排序,但在每個父級訂單之后,我想要他的孩子,也由updated_at
排序,即使孩子updated_at
低於下一個父級updated_at
。
我嘗試通過updated_at
對它們進行排序,並通過id
和self_ref_id
它們self_ref_id
。
我正在使用 go 和 gorm,如果它很重要,但我需要提示如何進行此查詢。 我也在嘗試使用子查詢,但沒有成功。 我不需要重復的字段,我只想訂購它們。
我可以做一些后處理來按照我想要的方式對它們進行排序,但我很好奇我是否可以從查詢中做到這一點。
您可以使用自聯接來執行此操作:
select o.*
from orders o
left join orders p on p.id = o.self_ref_id
order by
coalesce(p.updated_at, o.updated_at),
p.id is not null,
o.updated_at
left join
父行(如果有)。 然后,我們按父日期排序(如果沒有父日期,則按當前日期排序); 第二個排序條件( p.id is not null
)優先考慮“父”行,最后一個條件按日期對子行進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.