Sql oracle数据库中的查询限制
我试图创建一个有一定限制的查询 从报警中选择*,其中OBJECT_ID=0且TIMESTAMPFETCH FIRST仅在Oracle 12c之后可用 对于rownum方法,使用包含order by的子查询,然后限制封闭查询中的行:Sql oracle数据库中的查询限制,sql,oracle,Sql,Oracle,我试图创建一个有一定限制的查询 从报警中选择*,其中OBJECT_ID=0且TIMESTAMPFETCH FIRST仅在Oracle 12c之后可用 对于rownum方法,使用包含order by的子查询,然后限制封闭查询中的行: SELECT * FROM ( SELECT * FROM ALARMS WHERE OBJECT_ID=0 AND TIMESTAMP<=152567750417 ORDER BY TIMESTAMP DESC ) dt WHERE ROWNU
SELECT * FROM (
SELECT * FROM ALARMS WHERE OBJECT_ID=0 AND TIMESTAMP<=152567750417
ORDER BY TIMESTAMP DESC
) dt
WHERE ROWNUM<=51
FETCH FIRST仅在Oracle 12c之后可用
对于rownum方法,使用包含order by的子查询,然后限制封闭查询中的行:
SELECT * FROM (
SELECT * FROM ALARMS WHERE OBJECT_ID=0 AND TIMESTAMP<=152567750417
ORDER BY TIMESTAMP DESC
) dt
WHERE ROWNUM<=51
你只在最后错过了。如果我没记错的话,这个语法是从12c R1开始使用的。您使用哪个Oracle版本
SELECT * FROM ALARMS WHERE OBJECT_ID=0 AND TIMESTAMP<=1525677504171 ORDER BY TIMESTAMP DESC FETCH FIRST 51 ROWS ONLY
)
编辑:
既然你的版本是11g,那么试着使用这样的语法,我希望它能工作
SELECT *
FROM (
SELECT a.*,ROW_NUMBER() OVER(ORDER BY TIMESTAMP DESC) rcnt
FROM ALARMS A WHERE OBJECT_ID=0 AND TIMESTAMP<=1525677504171) src
WHERE src.rcnt <= 51
ORDER BY src.TIMESTAMP desc;
你只在最后错过了。如果我没记错的话,这个语法是从12c R1开始使用的。您使用哪个Oracle版本
SELECT * FROM ALARMS WHERE OBJECT_ID=0 AND TIMESTAMP<=1525677504171 ORDER BY TIMESTAMP DESC FETCH FIRST 51 ROWS ONLY
)
编辑:
既然你的版本是11g,那么试着使用这样的语法,我希望它能工作
SELECT *
FROM (
SELECT a.*,ROW_NUMBER() OVER(ORDER BY TIMESTAMP DESC) rcnt
FROM ALARMS A WHERE OBJECT_ID=0 AND TIMESTAMP<=1525677504171) src
WHERE src.rcnt <= 51
ORDER BY src.TIMESTAMP desc;
您不会在语句中仅使用FETCH FIRST 51 ROWS,而是在语句中仅使用FETCH FIRST 51 ROWS,而是使用FETCH FIRST 51 ROWS RELEVANT doc来支持这一点:我正在使用Oracle 11GREEVANT doc来支持这一点:我正在使用Oracle 11gIt,但dt意味着什么?这是派生表的别名。我不确定这在Oracle中是否必要,因为我正在使用多个数据库;在某些情况下,它是强制性的。它起作用,但dt是什么意思?这是派生表的别名。我不确定这在Oracle中是否必要,因为我正在使用多个数据库;在其中一些国家,这是强制性的。