DMSQL LIMIT限定條件

eric0435發表於2020-03-02

在DM中,可以使用限定條件對結果集做出篩選,支援LIMIT子句和ROW_LIMIT子句兩種方式。
LIMIT子句
LIMIT子句按順序選取結果集中某條記錄開始的N條記錄。語法如下
::= LIMIT< <記錄數>
| < <記錄數>,< 記錄數>>
| < <記錄數> OFFSET < 偏移量>>
>
< 記錄數>::=< 整數>
< 偏移量>::=< 整數>

共支援三種方式:
1. LIMIT N:選擇前N條記錄;
2. LIMIT M,N:選擇第M條記錄之後的N條記錄;
3. LIMIT M OFFSET N:選擇第N條記錄之後的M條記錄。
注意:LIMIT不能與TOP同時出現在查詢語句中。
例如查詢前2條記錄

SQL> SELECT PRODUCTID , NAME FROM PRODUCTION.PRODUCT LIMIT 2;
LINEID     PRODUCTID   NAME
---------- ----------- ------
1          1           紅樓夢
2          2           水滸傳
used time: 1.236(ms). Execute id is 39690.

例如查詢第3,4個登記的產品的編號和名稱。

SQL> SELECT PRODUCTID, NAME FROM PRODUCTION.PRODUCT LIMIT 2 OFFSET 2;
LINEID     PRODUCTID   NAME
---------- ----------- --------------------
1          3           老人與海
2          4           射鵰英雄傳(全四冊)
used time: 1.035(ms). Execute id is 39698.

例如查詢前第5,6,7個登記的姓名。

SQL> SELECT PERSONID,NAME FROM PERSON.PERSON LIMIT 4,3;
LINEID     PERSONID    NAME
---------- ----------- ----
1          5           孫麗
2          6           黃非
3          7           王菲
used time: 1.137(ms). Execute id is 39701.

ROW_LIMIT子句
用來指定查詢結果中,偏移位置的行數或者百分比行數,以便更為靈活地獲取查詢結果。
語法如下
< ROW_LIMIT子句>::= [OFFSET ] []
::= FETCH < 大小> [PERCENT] < ROW | ROWS >
引數說明:
offset:指定查詢返回行的起始偏移。
FIRST | NEXT:FIRST為從偏移為0的位置開始。NEXT, 為從指定的偏移的下一行開始獲取結果。只做註釋說明的作用,沒有實際的限定作用。< 大小>[PERCENT]:指定返回行的行數(無PERCENT)或者百分比(有PERCENT)。ONLY | WITH TIES:指定結果集是否返回額外的行。額外的行是指與最後一行以相同的排序鍵排序的所有行。ONLY為只返回指定的行數。WITH TIES必須與ORDER BY子句同時出現,如果沒有ORDER BY子句,則忽略WITH TIES。

引數限制:
1、offset:必須為數字。offset為負數的話視為0。offset為NULL或者大於或等於所返回的行數,返回0行。offset為小數時,小數部分截斷。
2、< 大小>:只能為數字。percent 指定為負數時,視為0%。percent 為NULL,返回0行。如果percent都沒有指定,返回1行。
3、不能與一起使用。
4、使用了選項,select列中不能包含有CURRVAL或者NEXTVAL偽列。
5、檢視的查詢定義中包含有,這個檢視不會增量重新整理。

例如查詢價格最便宜的50%的商品

SQL> SELECT NAME, NOWPRICE FROM PRODUCTION.PRODUCT ORDER BY NOWPRICE FETCH FIRST 50 PERCENT ROWS ONLY;
LINEID     NAME             NOWPRICE
---------- ---------------- --------
1          老人與海         6.1000
2          突破英文基礎詞彙 11.1000
3          工作中無小事     11.4000
4          水滸傳           14.3000
5          紅樓夢           15.2000
used time: 2.689(ms). Execute id is 39731.

例如查詢價格第3便宜開始的3條記錄

SQL> SELECT NAME, NOWPRICE FROM PRODUCTION.PRODUCT ORDER BY NOWPRICE OFFSET 2 ROWS FETCH FIRST 3 ROWS ONLY;
LINEID     NAME         NOWPRICE
---------- ------------ --------
1          工作中無小事 11.4000
2          水滸傳       14.3000
3          紅樓夢       15.2000
used time: 2.543(ms). Execute id is 39735.

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2678147/,如需轉載,請註明出處,否則將追究法律責任。

相關文章