示例数据库表称为测试
我正在尝试在“最后一个高度相同”内获得“最高优先级”的行
这是我到目前为止尝试过的
我首先尝试获取“表中的最高优先级”,然后通过使用以下查询成功获得了结果
SELECT * FROM test WHERE priority = (SELECT MAX(priority) FROM test)
现在,我认为此查询可以工作,但是会引发错误消息。
SELECT *
FROM test
WHERE priority = (SELECT MAX(priority) FROM test ORDER BY height DESC)
错误:列“ t2.height”必须出现在GROUP BY子句中或在聚合函数中使用
有人可以指导我如何解决这个问题吗?
答案 0 :(得分:0)
您可以在下面尝试-使用相关子查询
select * from test a where exists
(select 1 from test b
where a.height=b.height group by b.height having max(b.priority)=a.priority)
order by height desc
答案 1 :(得分:0)
如果我的理解正确,您将在Postgres中使用distinct on
:
select distinct on (height) t.*
from t
order by height, priority desc;
答案 2 :(得分:-1)
您可以尝试:-
SELECT id, height, max(priority)
from test
group by height