微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以对分组依据使用非聚合列吗?

如何解决我可以对分组依据使用非聚合列吗?

您无法获取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 举报,一经查实,本站将立刻删除。