ORDER BY 子句 - AWS Clean Rooms

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ORDER BY 子句

ORDER BY 子句會排序查詢的結果集。

注意

最外層的 ORDER BY 運算式必須只有位於選取清單中的欄。

語法

[ ORDER BY expression [ ASC | DESC ] ] [ NULLS FIRST | NULLS LAST ] [ LIMIT { count | ALL } ] [ OFFSET start ]

參數

運算式

定義查詢結果排序順序的運算式。它由選擇列表中的一個或多個列組成。結果會根據二進位 UTF-8 順序傳回。您還可以指定下列項目:

  • 代表選取清單項目位置的序數 (或是,若沒有選取清單的話,則為資料欄在資料表中的位置)

  • 定義選取清單項目的別名

當 ORDER BY 子句包含多個表達式時,結果集會根據第一個表達式排序,然後對擁有與第一個表達式相符之值的資料列套用第二個表達式,以此類推。

ASC | DESC

此選項會定義表達式的排序順序,如下所示:

  • ASC:遞增 (例如,數值從低到高,字元字串 'A' 到 'Z')。若未指定選項,資料會預設為遞增排序。

  • DESC:遞減 (數值從高到低,字串 'Z' 到 'A')。

NULLS FIRST | NULLS LAST

這些選項指定 NULL 值應該排序在最前 (在非 null 值之前) 或排序在最後 (在非 null 值之後)。根據預設,依 ASC 順序排序時,NULL 值排在最後面,而依 DESC 順序排序時,則排在最前面。

LIMIT number | ALL

此選項會控制查詢傳回的排序資料列數。LIMIT 數字必須是正整數;最大值為 2147483647

LIMIT 0 不會傳回任何資料列。您可以使用此語法進行測試:查看查詢執行情形 (不顯示任何資料列),或從資料表傳回資料欄清單。若您使用 LIMIT 0 傳回資料欄清單,則 ORDER BY 子句是多餘的。預設值為 LIMIT ALL。

OFFSET start

此選項會指定先略過 start 之前的資料列數,再開始傳回資料列。OFFSET 數字必須是正整數;最大值為 2147483647。搭配 LIMIT 選項使用時,會先略過 OFFSET 資料列,再開始計算傳回的 LIMIT 資料列。如果未使用 LIMIT 選項,則結果集中的資料列數會減掉略過的資料列數。OFFSET 子句略過的資料列仍須經過掃描,因此使用較大的 OFFSET 值可能會導致效率不佳。

使用須知

請注意以下使用 ORDER BY 子句的預期行為:

  • NULL 值會視為「高於」所有其他值。使用預設的遞增排序順序時,NULL 值會排列在最後面。若要變更此行為,請使用 NULLS FIRST 選項。

  • 若查詢未包含 ORDER BY 子句,系統傳回的結果集當中就不會有可預測的資料列排列順序。執行相同的查詢兩次,可能會傳回依不同順序排列的結果集。

  • LIMIT 和 OFFSET 選項可在沒有 ORDER BY 子句的情況下使用;不過,若要傳回一致的資料列集,請使用這些選項搭配 ORDER BY。

  • 在任何 parallel 系統中 AWS Clean Rooms,當 ORDER BY 不產生唯一的排序時,行的順序是不確定的。也就是說,如果 ORDER BY 運算式產生重複的值,這些資料列的傳回順序可能會因其他系統而異,或從一個執行 AWS Clean Rooms 到下一個執行。

  • AWS Clean Rooms ORDER BY 子句中不支持字符串文字。