日期:2014-05-16  浏览次数:20765 次

很奇怪的问题,求解
SELECT *,(case when (select count(1) from T_PIC where  PIC_TYPE=1 and rid=TT.ID)>=3 then 'y' else  'n' end )  as more_pic
FROM (  SELECT ROW_NUMBER() OVER (order by T.UPDATE_TIME desc)AS Row, T.*  from T_SHOPS_RENTAL T  WHERE CHECKED_STATUS=1 and HASDEL=0 ) TT WHERE TT.Row between 1 and 20

很简单的一个分页SQL,结果应该是更新时间最近的排在最前面,但是现在取出来的数据却是more_pic为'y'的排在最前面,ORDER BY UPDATE_TIME DESC 不起作用了,求解,我的写法有问题吗?
------解决方案--------------------
ROW_NUMBER() OVER (order by T.UPDATE_TIME desc) 这个是对已经查出来的数据集标号,对排序没用的,你应该在整个代码的最后加上order by来保证数据的顺序