假设我有下表:
表用户(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行,但这不是重点:我需要在结果中包含所有用户。
有可能吗?
答案 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;