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

WBOY
Lepaskan: 2016-06-13 12:08:45
asal
904 orang telah melayarinya

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!