查询一个表里的数据,按照插入日期排序(INSERT_DATE)获取前20条数据。该表的主键是ID(COLLECT_ID )。
SELECT COLLECT_TYPE,COLLECT_CODE,COLLECT_DESC,INSERT_DATE FROM SRBIMSZYDCOLLECTERROR A,(
SELECT ROW_NUMBER() OVER (ORDER BY INSERT_DATE DESC,COLLECT_TYPE,COLLECT_CODE) RN,
COLLECT_ID from SRBIMSZYDCOLLECTERROR ) T
WHERE T.COLLECT_ID=A.COLLECT_ID
AND RN BETWEEN 1 and 20
目前该语句在绝大部分环境中,最终结果都是按照日期排序后的前20条。
但在某一环境中,是按照日期排序后取得20条后,最终结果按照ID的正序排列返回。
绝大部分示意
ID | INSERT_DATE |
---|---|
03 | 2022-03-12 |
01 | 2022-03-11 |
02 | 2022-03-10 |
某一特殊环境
ID | INSERT_DATE |
---|---|
01 | 2022-03-11 |
02 | 2022-03-10 |
03 | 2022-03-12 |