我使用的是Postgres SQL,我想返回具有最大seq编号的行。
例如:
row_name, seq, data
row1, 1, abc
row1, 2, def
row2, 1, hij
row2, 2, klm
row2, 3, nop
我希望结果是:
row1, 2, def
row2, 3, nop
我正在使用:
SELECT * FROM table_name where seq = (SELECT MAX(seq) from table_name)
但它仅返回第2行,第3行。
请帮助谢谢。
答案 0 :(得分:1)
使用subquery
,然后内部加入max(seq).
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
答案 1 :(得分:0)
您还可以使用ROW_NUMBER来获得所需的输出,如下所示-
<img id="robot" src="https://img.favpng.com/20/7/18/clip-art-robot-free-content-image-vector-graphics-png-favpng-pJhfbKDrGy0yuQsKVTrjEu7br.jpg">
答案 2 :(得分:0)
SELECT
row_name, seq, data
FROM (
SELECT
row_name, seq, data,
max( seq) over(partition by row_name) max_seq
FROM your_table
) S
where seq=max_seq
答案 3 :(得分:0)
在Postgres中,针对此类问题最有效的解决方案通常是使用distinct on ()
select distinct on (row_name) row_name, seq, data
from the_table
order by row_name, seq desc;
答案 4 :(得分:-1)
我们也可以通过降序使用它。
SELECT *FROM table_name ORDER BY column1, column2 DESC