1. 这两条语句是否适用于PL/SQL?
这两条语句不是适合不适合plsql,而是不适合oracle
2.如果不适用那么还有其它更好的语句么?
oracle中用来限制行数,一般都用rownum这个伪列的。
如 select * from (select * from test order by id desc ) where rownum <=10;
order by 与 rownum 会按照语句中的层级关系的顺序来执行的。也就是如果select * from (select * from test order by id desc ) where rownum <=10 取出排序后的前10个,而select * from test where rownum < 10 order by metid desc,取出按照rowid顺序的前10名后再排序。
select top 10 * from test order by id desc;
oracle 中没有 top 这个关键字
如果你想在oracle中查处前世条
需要这样
select * from (
select * from test order by id desc;
}
where rownum <= 10
如果从中间抽取数据
只能用嵌套查询
select * from (
select *,rownum rn from test order by id desc;
}
where rn > 10 and rn <= 21
因为rownum只是一个伪列
select * from test order by id desc where rn > 2
这将查不出来任何数据
但rownum可以使用小于或等于来取值。。 。 。 。