时间:2021-07-01 10:21:17 帮助过:16人阅读
当取得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 成立
当 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 成立
意思就是遍历test 表中每一条记录,然后与自身做比较,每遍历一条记录,都与自身所有记录都比较一次。
相当于php中的两次foreach
foreach($ar as $v)
foreach($ar as $vl)
意思就是遍历test 表中每一条记录,然后与自身做比较,每遍历一条记录,都与自身所有记录都比较一次。
相当于php中的两次foreach
foreach($ar as $v)
foreach($ar as $vl)