要放在SELECT的最下面,複習一下語法:
1.SELECT:必要
2.FROM:必要
3.WHERE:選擇使用
4.GROUP BY :選擇使用
5.HAVING:有GROUP BY才可用
6.ORDER BY:選擇使用
7.OFFSET:選擇使用
語法如下(自己想的,不一定正確,看下方的紅字):
[OFFSET n [ROW|ROWS]] FETCH [FIRST|NEXT] n [PERCENT] [ROW|ROWS] [ONLY|WITH TIES]
※最後的PERCENT和ONLY要寫其中一個
※筆數是從0開始的
※OFFSET不指定,預設是 OFFSET 0 [ROW|ROWS],表示從第0筆開始
※OFFSET後的數字給負的,都表示0;如果給null或大於等於返回的行數,那就沒有結果返回
※FETCH [FIRST|NEXT] 表示取出幾筆資料,官方說不指定會將全部的結果返回,但我試的結果,不加就是編譯錯誤
※PERCENT是取百分筆用的(官方寫兩種,都一定是給數字,我懷疑它要如何分辯),如果給負數視同0;給null沒有結果返回
官方說如不給數字,預設是1,但我試的結果是編譯錯誤
※ONLY|WITH TIES兩者選者其一,但官方有說使用WITH TIES要配合ORDER BY使用,不然沒有結果會返回,但我試的結果和ONLY一樣
※最後一定要有 ROW ONLY、ROW WITH TIES、ROWS ONLY、ROWS WITH TIES 這四者其中之一語法才是正確的
※範例
SELECT * FROM emp OFFSET 10 ROWS FETCH NEXT 2 ROW ONLY; SELECT * FROM emp OFFSET 10 ROWS; SELECT * FROM emp FETCH FIRST 3 ROWS ONLY; SELECT * FROM emp FETCH NEXT 10 PERCENT ROWS ONLY; SELECT * FROM emp FETCH FIRST 10 PERCENT ROWS WITH TIES;
※第一條SQL表示忽略前10筆,取兩筆記錄,所以顯示第11和12筆
※第二條SQL表示從第11筆之後開始到最後
※第三條SQL表示取出前三筆
※第四、五條SQL都表示取10%的記錄,因為全部有14筆,所以是1.4
官方說小數會被截斷,可是我試的結果並不是,也不會四捨五入,直接進1,結果是2條記錄
沒有留言:
張貼留言