在加载时,我按照“Create_date desc”排序的1000条记录中只获得20条记录(页面的最大限制为20条记录)。现在我想对这些1000条记录进行排序,这些记录应该由SCHEDULE_ID ASC / DESC订购。
以下是查询:
select *
from (
select *
from (
select SCHEDULE_ID,
DEPARTMENT,
STATUS,
CREATE_DATE,
rownum ano
from M_T_NEMO
where STATUS like 2
AND ROWNUM <= 1000
ORDER BY CREATE_DATE DESC
)
ORDER BY SCHEDULE_ID ASC
)
where ano >= 0
AND ano <= 20
每页只能有20条记录。这个查询是否正确? 现在它每页只排序20条记录是错误的。
答案 0 :(得分:2)
您是否有理由使用所有这些嵌套的SELECT
语句?
你可以像
一样重写它SELECT SCHEDULE_ID,
DEPARTMENT,
STATUS,
CREATE_DATE,
ROWNUM ano
FROM M_T_NEMO
WHERE STATUS = 2
AND ROWNUM <= 20
ORDER BY CREATE_DATE DESC, SCHEDULE_ID ASC
实际上这可能不适用于Oracle,因为在排序
之前已分配ROWNUM
SELECT sub.*
ROWNUM
FROM (
SELECT SCHEDULE_ID,
DEPARTMENT,
STATUS,
CREATE_DATE
FROM M_T_NEMO
WHERE STATUS = 2
ORDER BY CREATE_DATE DESC, SCHEDULE_ID ASC
) sub
WHERE ROWNUM BETWEEN 1 AND 20
这样,您只需增加BETWEEN
运算符