您不能(不应该)将非聚合放到SELECT
查询的GROUP BY
行中。
不过,我想访问与max关联的非聚合之一。在纯英语中,我想要一个具有各种最早ID的表。
CREATE TABLE stuff (
id int,
kind int,
age int
);
这个查询提供了我需要的信息:
SELECT kind, MAX(age)
FROM stuff
GROUP BY kind;
但它不是最有用的形式。我真的希望将
id
与每一行相关联,以便在以后的查询中使用它。我在找这样的东西:
SELECT id, kind, MAX(age)
FROM stuff
GROUP BY kind;
结果是:
SELECT stuff.*
FROM
stuff,
( SELECT kind, MAX(age)
FROM stuff
GROUP BY kind) maxes
WHERE
stuff.kind = maxes.kind AND
stuff.age = maxes.age
似乎真的应该有一种不需要加入就能获得这些信息的方法。我只需要SQL引擎在计算最大值时记住其他列。
最佳答案
无法获取Max找到的行的ID,因为可能不止一个ID的最大使用期限。
关于sql - 我可以将非聚合列与group by一起使用吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3168042/