很奇怪的问题,求解
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来保证数据的顺序