您不能(不应该)将非聚合放到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/

10-12 19:00