关于聚合函数之外的字段

MySql 码拜 9年前 (2016-05-02) 782次浏览
1. 需求
name  age  score      time
aaa   18    88    2016-08-01
aaa   18    89    2016-09-01
aaa   18    87    2016-06-01
bbb   19    63    2016-05-01
bbb   19    76    2016-03-01
bbb   19    43    2016-01-01
bbb   19    45    2016-04-01
ccc   20    100   2016-05-01
ccc   20    88    2016-10-01

2. 目的
本人需要当name,age相同的时候,得到最小的score,但是,必须附带对应的time值

假如这样写
select name,age,min(score),time from table group by name,age
这样写,可以得到name,age,score这些值是对的,但是time的值不对.
PS:分组字段之外的字段必须包含到聚合函数之内,否者就会顺序的取第一个值或随机取得一个.(这里的time就是顺序取得第一个,完全对不上)
3. 结果
name  age  score      time
aaa   18     87      2016-06-01
bbb   19     43      2016-01-01
ccc   20     88      2016-10-01

解决方案

80

精华贴中的例子。
select *
from (select * from table order by name,age,score) t
group by name,age

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于聚合函数之外的字段
喜欢 (0)
[1034331897@qq.com]
分享 (0)