问题描述
您无法获取MAX找到的行的ID,因为可能不会只有一个ID具有最长使用期限。
解决方法
您不能(不应该)将非聚合放在查询SELECT
行中GROUP BY
。
但是,我想访问与最大关联的非聚合之一。用简单的英语来说,我想要一个带有每种类型的最早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引擎在计算最大值时记住其他列。