SELECT 在唯一列上(不同?)
SELECT on a unique column (DISTINCT?)
我有一个查询给了我以下 table (ORDER BY b):
a b c
1 100 x1
1 90 x2
2 85 y1
1 80 x3
2 75 y2
2 70 y3
1 65 x4
我想要以下输出:
a b c
1 100 x1
2 85 y1
所以a中的值是唯一的,但应该是b为最大值的那一行。实现此目标的最佳方法是什么?
在 Postgres 中,您可以使用 distinct on
:
select distinct on (a) t.*
from mytable t
order by a, b desc
您可以使用inner join
select * from TableName as t1
inner join (
select a,max(b) as b from TableName
group by a
) as sub_table on sub_table.a = t1.a and sub_table.b = t1.b
我有一个查询给了我以下 table (ORDER BY b):
a b c
1 100 x1
1 90 x2
2 85 y1
1 80 x3
2 75 y2
2 70 y3
1 65 x4
我想要以下输出:
a b c
1 100 x1
2 85 y1
所以a中的值是唯一的,但应该是b为最大值的那一行。实现此目标的最佳方法是什么?
在 Postgres 中,您可以使用 distinct on
:
select distinct on (a) t.*
from mytable t
order by a, b desc
您可以使用inner join
select * from TableName as t1
inner join (
select a,max(b) as b from TableName
group by a
) as sub_table on sub_table.a = t1.a and sub_table.b = t1.b