计算没有分组的列值的组函数(count,min,max ...)

时间:2014-12-05 14:53:03

标签: mysql sql group-by

假设我有下表:

表用户(ID,姓名,年龄,城市)

1 John    26 New York
2 Aaron   31 Dallas
3 Jenifer 35 Dallas
4 Connely 34 New York

我希望有一个表格,其中所有用户的最小用户年龄都是他(她)的城市:

1 John    26 New York 26
2 Aaron   31 Dallas   31
3 Jenifer 35 Dallas   31
4 Connely 34 New York 26

这个例子有点人为,但我没有想出更好的示例。

如果我使用的请求如下:

SELECT * FROM users MIN(年龄)GROUP BY city

我可能会得到:

1 John    26 New York
2 Aaron   31 Dallas

我不确定它会返回第1行和第2行,但这不是重点:我需要在结果中包含所有用户。

有可能吗?

2 个答案:

答案 0 :(得分:11)

我倾向于用join

来做这件事
select u.*, c.minage
from users u join
     (select city, min(age) as minage
      from users
      group by city
     ) c
     on u.city = c.city;

答案 1 :(得分:1)

我会做一个子选择:

select u.*, (select MIN(age) from users s where s.city = u.city)
from users u;