postgresql:如何从group by子句中获取主键?

postgresql:如何从group by子句中获取主键?,第1张

概述这是一个选择一组所需行的查询: select max(a), b, c, d, efrom Tgroup by b, c, d, e; 该表有一个主键,列id. 我想通过从每个行中获取主键来在另一个查询中标识这些行.我该怎么办?这不起作用: select id, max(a), b, c, d, efrom T group by b, c, d, e;ERROR: column "T 这是一个选择一组所需行的查询:
select max(a),b,c,d,efrom Tgroup by b,e;

该表有一个主键,列ID.

我想通过从每个行中获取主键来在另一个查询中标识这些行.我该怎么办?这不起作用:

select ID,max(a),efrom T group by b,e;ERROR:  column "T.ID" must appear in the GROUP BY clause or be used in an aggregate function

我在其他一些postgresql问题中尝试了这个,但没有运气:

select distinct on (ID) ID,e;ERROR:  column "T.ID" must appear in the GROUP BY clause or be used in an aggregate function

我该怎么办?我知道每个结果只能有一个ID,因为它是一个主键…我真的希望主键和其余数据,对于初始(工作)查询返回的每一行.

如果你不关心你得到哪个ID,那么你只需要将你的ID包装在一些聚合函数中,该函数可以保证给你一个有效的ID.想到最大和最小聚合:
-- Or min(ID) if you want better spiritual balance.select max(ID),e;

根据你的数据,我认为使用窗口函数将是一个更好的计划(感谢恶魔otto引导到头部):

select ID,a,efrom (    select ID,e,rank() over (partition by b,e order by a desc) as r    from T) as dtwhere r = 1
总结

以上是内存溢出为你收集整理的postgresql:如何从group by子句中获取主键?全部内容,希望文章能够帮你解决postgresql:如何从group by子句中获取主键?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/1170152.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-02
下一篇2022-06-02

发表评论

登录后才能评论

评论列表(0条)

    保存