SQL SELECT子句(磚)
從一個或多個表組成一個結果集。的選擇
條款可以查詢的一部分,還包括公共表表達式(CTE),設置操作,以及其他條款。
語法
選擇(提示](所有|截然不同的]{named_expression|star_clause}(,…]從from_item(,…](橫向視圖條款](主條款](在哪裏條款](集團通過條款](有條款](有資格條款]from_item{table_name(TABLESAMPLE條款](table_alias]|加入條款|(橫向]table_valued_function(table_alias]|值條款|(橫向](查詢)(TABLESAMPLE條款](table_alias]}named_expression表達式(column_alias]star_clause({table_name|view_name}。]*(except_clause]except_clause除了({column_name|field_name}(,…])
參數
提示幫助磚SQL優化器做出更好的規劃決策。磚SQL支持暗示影響連接策略的選擇和數據的重新分區。
所有
從關係選擇所有匹配的行。默認啟用。
截然不同的
選擇所有匹配行關係後刪除重複的結果。
named_expression
和一個可選的表達式指定的名字。
結合一個或多個值,操作符和SQL函數,計算一個值。
一個可選的列標識符命名表達式的結果。如果沒有
column_alias
提供SQL派生一個磚。
star_clause
一種速記中的所有引用的列名稱
從
條款。列的列表命令的順序from_item
在每個年代的順序列from_item
。的_metadata列不包括這個列表。您必須顯式地引用它。
如果存在限製了列的名字將在指定的引用的表。
如果列指定的限製擴大到那些在指定的引用的視圖。
except_clause
選擇錯誤的列或字段的引用集列確定的
select_star
條款。一列的列的集合,你可以參考。
指一組字段的列的列,您可以參考。如果你從一個排除所有字段
結構體
,結果是一個空結構體
。
每個名稱必須引用一組列中包含的列,您可以引用或他們的田地。否則,磚SQL提出了一個UNRESOLVED_COLUMN錯誤。如果名字重疊或不獨特,磚SQL提出了一個EXCEPT_OVERLAPPING_COLUMNS錯誤。
from_item
輸入的來源
選擇
。下列之一:標識一個表可能包含一個時間規範。看到查詢一個表(舊的快照時間旅行)獲取詳細信息。
標識一個視圖。
結合使用一個連接兩個或兩個以上的關係。
調用一個表函數。引用列前暴露
from_item
在相同的從
您必須指定條款橫向
。定義了一個內聯表。
(橫向)(查詢)
使用一個查詢計算關係。一個查詢前綴的
橫向
可以參考列由前公開嗎from_item
在相同的從
條款。這樣的構造稱為相關或依賴查詢。隻選擇結果集的大小減少抽樣的一小部分的行。
(可選)指定的標簽
from_item
。如果table_alias
包括column_identifier
年代數量必須匹配的列數from_item
。
用於數據透視圖;你可以基於特定的列值的聚合值。
與發電機一起使用等功能
爆炸
,它生成一個虛擬表包含一個或多個行。橫向視圖
行適用於每個原始輸出行。過濾器的結果
從
基於提供的謂詞的條款。表達式用於組行。這是與聚合函數一起使用(
最小值
,馬克斯
,數
,總和
,AVG
)組行基於分組每組表情和聚合值。當一個過濾器
條款附加到一個聚合函數,隻有匹配行傳遞給這個函數。產生的謂詞的行
集團通過
是過濾。的有
子句用於過濾行分組後進行。如果您指定有
沒有集團通過
,它顯示一個集團通過
沒有分組表達式(全球總)。使用的謂詞過濾窗口函數的結果。使用
有資格
,至少有一窗口函數需要出現在選擇列表或資格條款。
選擇在三角洲表
除了標準選擇
選項,三角洲表支持在這一節中描述的時間旅行的選擇。有關詳細信息,請參見查詢一個表(舊的快照時間旅行)。
作為的
語法
table_identifier時間戳作為的timestamp_expressiontable_identifier版本作為的版本
timestamp_expression
可以是任何一個:2018 - 10 - 18 t22:15:12.013z
,也就是說,可以把一個字符串,該字符串轉換為一個時間戳鑄造(' 2018-10-1813:36:32c '作為時間戳)
“2018-10-18”
,也就是說,一個日期字符串current_timestamp ()- - - - - -時間間隔12小時
date_sub(當前日期(),1)
其他表達式,也可以把一個時間戳
版本
是一個長期的價值,可以獲得輸出的嗎描述曆史table_spec
。
既不timestamp_expression
也不版本
子查詢。
例子
——選擇所有引用的列從所有表> select *值(1、2)t1 (c1, c2), (3、4) t2值(c3、c4);1 2 3 4,選擇所有引用的列一個表>選擇t2。*從值(1、2)t1 (c1, c2), (3、4) t2值(c3、c4);3 4——從所有表除了t2選擇所有引用的列。c4 > SELECT *除了(c4)值(1、2)t1 (c1, c2), (3、4) t2值(c3、c4);1 2 3——從一個表中選擇所有引用的列,除了一個嵌套。> SELECT * (c2.b除外)的值(1,named_struct (' a ' 2 ' b ', 3))當t (c1, c2);1 {“a”: 2},移除所有字段的結果在一個空的結構> SELECT * (c2除外。b, c2.a)值(1,named_struct (' a ' 2 ' b ', 3))當t (c1, c2);1{},重疊導致一個錯誤的名字> SELECT *除了(c2, c2.a)值(1,named_struct (' a ' 2 ' b ', 3))當t (c1, c2);錯誤:EXCEPT_OVERLAPPING_COLUMNS