首页  >  文章  >  后端开发  >  mysql 分组按name分组取值最大一条,不理解啊求解惑。解决思路

mysql 分组按name分组取值最大一条,不理解啊求解惑。解决思路

WBOY
WBOY原创
2016-06-13 12:08:45904浏览

mysql 分组按name分组取值最大一条,不理解啊,求解惑。
select a.* from test a where 1 > (select count(*) from test where name = a.name and val > a.val )
sql语句,按name分组显示最大的val值的字段
问题:select count(*) from test where name = a.name and val > a.val  子查询查出来不是一个数值吗?那sql语句不就成了
select a.* from test a where 1 >1?  但是这个逻辑明显是错误的,那正确的逻辑是什么呢? 外层和内层是如何比较的呢?感觉智商不够理解不了啊,,,,,
------解决思路----------------------
当取得val最大值时,count(*) 是0 ,1>0 不是刚好满足吗
------解决思路----------------------
当 a.val 为最大值时
val > a.val 不成立,(select count(*) from test where name = a.name and val > a.val ) 返回 0 (没有符合条件的记录)
1 > (select count(*) from test where name = a.name and val > a.val )
成立,该条记录被选出

其实你已经知道了,只是没绕过弯子来
select a.* from test a where 1 > count
count 是所有大于 a.val 的记录数,只在不存在的时候才会有 conut 等于 0.表达式 1 > 0 成立

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn