您不能(不应该)将非聚合放在查询SELECT行中GROUP BY。
SELECT
GROUP BY
但是,我想访问与最大关联的非聚合之一。用简单的英语来说,我想要一个带有每种类型的最早ID的表。
CREATE TABLE stuff ( id int, kind int, age int );
该查询为我提供了我所需要的信息:
SELECT kind, MAX(age) FROM stuff GROUP BY kind;
但这不是最有用的形式。我真的想要id与每一行相关联,以便可以在以后的查询中使用它。
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具有最长使用期限。