最開始是這樣寫的:
SELECT *
FROM (SELECT row_number () OVER () AS rown, CC_BRAND.*
FROM CC_BRAND
ORDER BY CC_BRAND.BRAND_CODE) AS A
WHERE a.ROWN >= 1 AND a.ROWN <= 10;
我的思路是這樣的:
我把第一種分頁SQL中紅色標注部分的運行結果當做一個結果視圖。然後再對它裡面的ROWN字段進行有選擇查詢
我感覺這是沒有任務問題的,但結果卻是錯誤的。不解呀
運行紅色標注部分,運行完全正確,但全部運行就不對了,排序錯亂了,和紅色標注部分的排序結果完全不一樣,很讓我不解,
最後在網上查找了“排序分布”的例子,修改一下就好了 -www.2cto.com-
如下:
SELECT *
FROM (SELECT row_number () OVER (ORDER BY CC_BRAND.BRAND_CODE) AS rown,
CC_BRAND.*
FROM CC_BRAND) AS A
WHERE a.ROWN >= 1 AND a.ROWN <= 10;
藍色標注部分就是不一樣的地方,要把排序放在over後面的括號裡面,
這樣才能正確排序分頁。
作者 jvortex