日期:2014-05-17  浏览次数:20606 次

这个SQL语句的结果是什么?为什么?
本帖最后由 gaswei 于 2013-06-29 11:57:57 编辑
SELECT  order_num,  total_price  
FROM  items a 
 WHERE  10 >      
( SELECT  COUNT  ( * )    FROM  items b    WHERE  b.total_price < a.total_price )
ORDER  BY  total_price 

看不明白为什么是选出最小的前10项,求解释,谢谢!

------解决方案--------------------
你可以这么看,加入total_price有

1-20 20个数,取a.total_price为13,小于这个数的有多少,1-12,12个是吧! 12 肯定是大于 10的,那么13肯定不符合,看到这个判断逻辑,楼主应该清楚一些东西了吧!这个查询相当于对于一个特定的total_price,只要小于它的数据行数不超过10,就可以被查询到,怎么才能小于10,当然要让这个特定的total_price在最小的10个toal_price范围之内,那么查询到的也就是最小的10个total_price对应的数据。