SQL - 在group by中选择第一个组

时间:2018-03-29 13:41:10

标签: sql group-by db2

我在DB2中有这个表:

+----+-----+----------+
| id | name| key      |
+----+-----+----------+
| 1  | foo |111000    |
| 2  | bar |111000    |
| 3  | foo |000111    |
+----+-----+----------+

当我按名称分组时,我可以提取按名称分组的表格,但是如何自动仅提取第一组,以获得此结果:

+----+-----+----------+
| id | name| key      |
+----+-----+----------+
| 1  | foo |111000    |
| 3  | foo |000111    |
+----+-----+----------+

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

MIN函数将通过id识别哪一行是第一行,然后您可以使用它来过滤结果以仅显示该行。

SELECT id,name,key
FROM Table1
WHERE id IN (SELECT MIN(ID) FROM Table1 GROUP BY name,key)

答案 1 :(得分:1)

您可以在由min id聚合的subselect上使用内部联接

select * from mytable
inner join  (
  select min(id) my_id
  from mytable 
  group by name, key
) t on t.my_id = mytable.id