注意:rownum只能用符號(<、<=、!=)。 ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? select ? * ? from ? tablename ? where ? rownum ? != ? 10;返回的是前9條記錄。 ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? 不能用:>,>=,=,Between...and。由于rownum是一個總是從1開始的偽列,Oracle ? 認為這種條件 ? ?
? ?
? 只能用 ?
? select ? * ?
? from ? table_name ?
? where ? rownum ? < ? N ?
? minus ?
? select ? * ?
? from ? table_name ?
? where ? rownum ? < ? M ?
? ?
? 就可以選中 ? M ? 與 ? N之間的。 ?
? ?
? ?
? ?
? rownum是偽列,代表已經查詢到的記錄的行序號。還未查到的記錄是沒有rownum的。 ?
? 因此ROWNUM>=1 ? AND ? ROWNUM<=10是可以查到前10條記錄但是不能證明 ?
? ROWNUM>=500 ? AND ? ROWNUM<=600可以查處500~600的501條記錄。 ?
? ROWNUM>=1 ? AND ? ROWNUM<=10在邏輯上相當于ROWNUM<=10 ?
? 正確的方法是: ?
? select ? * ? from ? (select ? Z_YXJK_DMDH.*, ? rownum ? as ? rid ? from ? Z_YXJK_DMDH ? where ? rownum<=600) ? where ? rid ? > ? 500 ?
? 或者 ?
? select ? * ? from ? Z_YXJK_DMDH ? where ? rownum<=600 ?
? minus ?
? select ? * ? from ? Z_YXJK_DMDH ? where ? rownum<=500 ?
? 在效率上推薦前一種
posted on 2009-03-16 16:59
JasonChou 閱讀(1526)
評論(0) 編輯 收藏 所屬分類:
database