Sql 如何选择每行的最大值?

Sql 如何选择每行的最大值?,sql,postgresql,Sql,Postgresql,我正在使用Postgres SQL,我想返回序列号最大的行 例如: 我希望结果是: row1, 2, def row2, 3, nop 我正在使用: SELECT * FROM table_name where seq = (SELECT MAX(seq) from table_name) 但它只返回第2行,第3行,没有 请帮助,谢谢。使用子查询,然后内部加入maxseq 我们也可以使用降序法 SELECT *FROM table_name ORDER BY column1, colum

我正在使用Postgres SQL,我想返回序列号最大的行

例如:

我希望结果是:

row1, 2, def
row2, 3, nop
我正在使用:

SELECT * FROM table_name where seq = (SELECT MAX(seq) from table_name)

但它只返回第2行,第3行,没有

请帮助,谢谢。

使用子查询,然后内部加入maxseq


我们也可以使用降序法

 SELECT *FROM table_name ORDER BY column1, column2 DESC

您还可以使用ROW_NUMBER获得所需的输出,如下所示-

选择 行名称,序号,数据 从…起 选择 行名称、序号、数据、, 按行名称的最大顺序超额分配最大顺序 从你的桌子上 s 其中seq=max_seq
对于这类问题,Postgres中最有效的解决方案通常是使用distinct on


你好t.row_name中的t是什么?@AlanTT,updated,t是第一个表的别名如何在HQL中实现?因为HQL不允许从中进行子查询。
select * from table_name t
inner join 
    (select max(seq) seq, row_name from table_name group by row_name) t1 on t1.row_name = t.row_name and t.seq = t1.seq
 SELECT *FROM table_name ORDER BY column1, column2 DESC
SELECT row_name, seq, data 
FROM 
(
    SELECT *, 
    ROW_NUMBER() OVER (PARTITION BY row_name ORDER BY seq DESC) RN
    FROM your_table
)A
WHERE RN = 1
select distinct on (row_name) row_name, seq, data
from the_table
order by row_name, seq desc;