我有这张表:
+----+-----+----------+ | 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);
我知道这是不正确的,因为我应该按需要显示的所有列进行分组。
有解决这个问题的方法吗?
适用于所有数据库引擎的查询将是
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),则得到另一个。