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

WBOY
发布: 2016-06-13 12:08:45
原创
905 人浏览过

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 成立

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!