聘我网

新概念招聘3.0

sql 最小值对应的记录问题

vote up0vote downstar
id a  b   c
1  1 100  60
2  1 300 50
3  1 200 20
4  2 200 30
5  2 300 70
6  2 50  80

sql语句怎么下最终可以变成这样的

id a  b   c
1  1 100  60
6  2 50  80

就是相同的a的最小的b 然后吧c附带上去

 

1 个答复

vote up0vote downcheck

select * from table group by a having min(b);

这句是错的,因为它只是检测该group内最小的b是否为false,用来在结果中过滤某个group,而不是在group内选择某行

应该用下面的:

SELECT t1.*
FROM table t1
LEFT OUTER JOIN table t2
  ON (t1.a=t2.a AND (t1.b>t2.b OR t1.b=t2.b AND t1.id>t2.id))
WHERE t2.a IS NULL;
链接

您的回答





不是您要找的问题? 浏览其他含有标签 的问题或者 自己问个.