小编典典

选择所有具有GROUP BY一列的列

sql

我有这张表:

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

有没有一种方法可以通过密钥分组来获得此结果?

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

或此结果:

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

如果我使用此查询:

SELECT * FROM sch.mytable GROUP BY(key);

我知道这是不正确的,因为我应该按需要显示的所有列进行分组。

有解决这个问题的方法吗?


阅读 163

收藏
2021-05-05

共1个答案

小编典典

适用于所有数据库引擎的查询将是

select t1.*
from sch.mytable t1
join
(
    SELECT min(id) as id
    FROM sch.mytable 
    GROUP BY key
) t2 on t1.id = t2.id

min(id)影响您获得结果的功能在哪里?如果您使用max(id),则得到另一个。

2021-05-05