如何解决我可以对分组依据使用非聚合列吗?
您无法获取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引擎在计算最大值时记住其他列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。