本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
SELECT 清單
SELECT 清單會指出您要查詢傳回的資料欄、函數及表達式的名稱。清單查詢的輸出。
Syntax (語法)
SELECT [ TOP number ] [ ALL | DISTINCT ] * | expression [ AS column_alias ] [, ...]
參數
- TOP number
-
TOP 會採用正整數做為其引數,此引數定義傳回至用戶端的資料列數。TOP 子句的行為與 LIMIT 子句的行為相同。傳回的資料列數是固定的,但資料列集卻不是。若要傳回一致的資料列集,請搭配 ORDER BY 子句使用 TOP 或 LIMIT。
- ALL
-
您未指定 DISTINCT 時,用來定義預設行為的備援關鍵字。
SELECT ALL *
的意義與SELECT *
相同 (選取所有資料欄的所有資料列並保留重複項目)。 - DISTINCT
-
此選項會根據一個或多個資料欄中相符的值,從結果集中消除重複的資料列。
- * (星號)
-
傳回資料表的整個內容 (所有資料欄和所有資料列)。
- 運算式
-
表達式是由查詢所參考資料表中的一個或多個資料欄構成。表達式可包含 SQL 函數。例如:
avg(datediff(day, listtime, saletime))
- AS column_alias
-
資料欄的暫時名稱,會在最終結果集中使用。AS 關鍵字為選用。例如:
avg(datediff(day, listtime, saletime)) as avgwait
若您沒有為表達式指定非簡單資料欄名稱的別名,結果集將會套用預設名稱至該資料欄。
注意 別名在目標清單中定義之後立即直接辨識。您可以在相同目標清單中後續定義的其他表達式後面使用別名。下列的範例示範了這一點。
select clicks / impressions as probability, round(100 * probability, 1) as percentage from raw_data;
側邊別名參考的好處在於,您在相同目標清單中建構更複雜的表達式時,不需要重複有別名的表達式。當 Amazon Redshift 會分析此類型參考時,會直接內嵌先前定義的別名。若
FROM
子句中定義了與先前具有別名之表達式同名的資料欄,則FROM
子句中的資料欄優先順序較高。例如,在上方查詢中,若 raw_data 資料表中有名為 'probability' 的資料欄,目標清單中第二個表達式內的 'probability' 會參考該資料欄,而不是 'probability' 這個別名。
使用須知
TOP 是 SQL 延伸模組;它提供了 LIMIT 行為的替代方式。您無法在相同查詢中同時使用 TOP 和 LIMIT。