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")后方可在条件中使用