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