2 baidu 32809053 baidu_32809053 于 2016.02.20 16:14 提问

关于mysql中查询重复数据的疑问

我有一个表叫做sc.
图片说明
现在要查询score中有相同分数的信息,
查询的sql语句是
select * from sc where score in (select score from sc group by score having count(score)>1);

我很好奇的是group by的执行顺序是比 having先执行啊,
按道理,执行了之后重复的score值是没有的,怎么还能再用having 来查出count(score)>1
的重复的score记录啊...好奇怪..谁能解答下。。谢谢

3个回答

xuxiaoyinliu
xuxiaoyinliu   2016.02.20 18:10

我的理解:group by 先按score分组(90,90) (100,100)... 之后having对每一组进行判断是否满足count(score)>1 满足则保留这一组,否则舍弃,之后再取出满足条件的score

oyljerry
oyljerry   Ds   Rxr 2016.02.20 19:49

having的条件是group先分组之后再进行条件判断的

xionglangs
xionglangs   Rxr 2016.02.22 16:07

你这条sql最好写成这样select * from sc where score in (select score from (select score from sc group by score having count(score)>1) as scor);
这样是可以执行的。

Csdn user default icon
上传中...
上传图片
插入图片