多个级联的Postgresql顺序?
Posted
技术标签:
【中文标题】多个级联的Postgresql顺序?【英文标题】:Postgresql Order By Multiple Cascading? 【发布时间】:2021-04-08 13:43:43 【问题描述】:我希望这是一个快速的问题,但我无法弄清楚。有没有办法在 Postgres 中级联排序?例如说我有下表:
Name | Staff_ID | Attribute_ID |
---|---|---|
Horse | null | 1 |
Bird | null | 10 |
Cat | 1 | 8 |
Dog | 2 | 8 |
Cat | 1 | 9 |
Dog | 2 | 9 |
我可以让它返回,以便订单按attribute_id asc 排序,然后当它看到订单中有多个条目并将空值放在第一位时按staffid 排序?如:
编辑:在 cmets 中添加了这个
我想最终我想按 Attribute_ID 排序,直到它看到一个 staff_id asc 的多个条目,然后在返回 attribute_id 之前按 staff_id 排序
Name | Staff_ID | Attribute_ID |
---|---|---|
Horse | null | 1 |
Cat | 1 | 8 |
Cat | 1 | 9 |
Dog | 2 | 8 |
Dog | 2 | 9 |
Bird | null | 10 |
谢谢!
【问题讨论】:
描述很复杂,不确定我是否正确。不是按staff_id、Attribute_id 排序吗?哦不,我看到你介绍了一个不存在的价值。我不知道它会从哪里来。 嘿 Cetin 我刚刚更新了列表以使其更有意义和更正确?我想最终我想按 Attribute_ID 排序,直到它看到一个 staff_id asc 的多个条目,然后在返回 attribute_id 之前按 staff_id 排序 【参考方案1】:如果我理解正确,您希望所有 name
s 都在一起,基于名称的最小属性 id。那将是:
order by min(attribute_id) over (partition by name),
name,
attribute_id;
【讨论】:
这行得通,我把它搞砸了。非常感谢!以上是关于多个级联的Postgresql顺序?的主要内容,如果未能解决你的问题,请参考以下文章