簡體   English   中英

Postgres 按 id、自引用 id 和日期排序條目,在每個父項之后,列出子項

[英]Postgres order entries by id, self reference id and date, after every parent, list childs

我的表orders包含以下字段idupdated_atself_ref_id和其他不計算在內的字段。
self_ref_id列是一個自引用兩個一個訂單,一個訂單可以有多個孩子,一個孩子不會有其他孩子。
我試圖通過updated_at desc對所有條目進行排序,但在每個父級訂單之后,我想要他的孩子,也由updated_at排序,即使孩子updated_at低於下一個父級updated_at

我嘗試通過updated_at對它們進行排序,並通過idself_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.

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