今天写一个页面,要求是查询排序后的前五条数据,遇到一个不大不小的坑,特此记录下
说明下:SQL SERVER中是用top查询前几条数据,ORACLE没有top,但是可以用ROWNUM实现。
我写的语句是:
SELECT * FROM TABLE_NAME t WHERE ROWNUM <= 5 ORDER BY t.PRICE DESC;
发现查询出来的数据并不是表中价格最高的前五条,而是数据库中前五条记录排序后的结果
后改为
SELECT * FROM (SELECT * FROM TABLE_NAME t ORDER BY t.PRICE DESC) WHERE ROWNUM <= 5;
得到预期的结果。
两者的不同就在于 前者先取出五条数据然后进行排序,后者先将表中所有数据排序,再取出前五条。
版权声明:本文为Amazing20原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。