關於ROWNUM=1 時,獲取的值

搜了一下,通常rownum 順序遵循:

  1. 全表掃描時,按table segment datafile id, block id 順序
  2. 索引掃描時,按鍵值順序
SELECT A.parameter_value
          FROM MES.RT_PRODPARAMETER A , ENTIREDBA.BS_PROCESS B , MES.RT_RUNCARD R
         WHERE     B.PROCESS_DESC = '偏貼1'
         AND  A.processid =B.processid
         AND A.parameter_name = '機台/治具:'
               AND A.runcard = r.runcard
               AND ROWNUM = 1
        SELECT a.parameter_value
           FROM MES.RT_PRODPARAMETER A , MES.RT_RUNCARD R
         WHERE     a.processid IN (2045, 2070)
               AND a.parameter_name = '機台/治具:'
               AND a.runcard = r.runcard
              AND ROWNUM = 1

我這兩段代碼查詢的數值是一樣的,但是rownum = 1 後顯示的值卻是不一樣的,且也不是查詢出來的值的第一行,網上搜了一下,就是存在一個隱性的rowid,如何能查看到這個rowid ,還有是不是不加 order by 排序條件的情況下,沒法准確調整使上面獲取的值等於下面那個?



sql是个解释性的语言,不同数据库有不同的实现
不加order by,那么到底默认以哪一列排序,跟数据库有关,跟表结构也有关,甚至跟你的sql语句有关
可以肯定的是并不一定是按select里面写的第一个字段排序
所以你也可以认为这个排序是随机的