sqlrownum
1. plsql怎樣根據表的行號查詢數據
PLSQL中查詢語句的行號可以用ROWNUM(偽列)標識,
如SELECT ROWNUM,VT.* FROM V$TABLESPACE VT;
但PLSQL很少用行號查詢資料庫, 除非為了控制數據量
如SQLSERVER的SELECT TOP * ...
或PLSQL的SELECT * FROM <TABLE> WHERE ROWNUM =1, 或ROWNUM<10
進一步進行測試:
SQL1). SELECT ROWNUM,VT.* FROM V$TABLESPACE VT;
SQL2). SELECT ROWNUM,VT.* FROM V$TABLESPACE VT ORDER BY VT.NAME;
分析:對比1和2, 同一級的查詢, ORDER BY排序不會影響ROWNUM編號(先產生ROWNUM後排序)
SQL3). SELECT ROWNUM,VT2.* FROM (SELECT VT.* FROM V$TABLESPACE VT ORDER BY VT.NAME) VT2;
分析:如希望用排序後的結果編號,則需將排序放在子查詢中,再取ROWNUM
SQL4). SELECT * FROM (SELECT ROWNUM ,VT.* FROM V$TABLESPACE VT WHERE ROWNUM <10 ORDER BY VT.NAME) WHERE ROWNUM = 3;
無數據,分析:ROWNUM為全局偽列, 在解析時優先順序高於子查詢中的ROWNUM列
SQL5). SELECT * FROM (SELECT ROWNUM RN,VT.* FROM V$TABLESPACE VT WHERE ROWNUM <10 ORDER BY VT.NAME) A WHERE A.RN = 3;
得到指定行的數據,分析:子查詢中ROWNUM編號需定義別名(本例中為"RN")後方可在條件中使用
2. oracle 某條記錄rownum號會變嗎
rownum是sql查詢結果的編號,根據sql的不同,記錄所對應的rownum號會變