【问题标题】:Postgresql Order By Multiple Cascading?多个级联的Postgresql顺序?
【发布时间】: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 排序

标签: sql postgresql


【解决方案1】:

如果我理解正确,您希望所有 names 都在一起,基于名称的最小属性 id。那将是:

order by min(attribute_id) over (partition by name),
         name,
         attribute_id;

【讨论】:

  • 这行得通,我把它搞砸了。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多