选择
适用于:砖的SQL砖运行时
从一个或多个组成一个结果集表引用。的选择
条款可以查询的一部分,还包括公共表表达式(CTE),设置操作,以及其他条款。
语法
选择(提示](所有|截然不同的]{named_expression|star_clause}(,…]从table_reference(,…](横向视图条款](在哪里条款](集团通过条款](有条款](有资格条款]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
一种速记中的所有引用的列名称
从
条款。列的列表命令的顺序table_reference
在每个年代的顺序列table_reference
。的_metadata列不包括这个列表。您必须显式地引用它。
如果存在限制了列的名字将在指定的引用的表。
如果列指定的限制扩大到那些在指定的引用的视图。
except_clause
适用于:砖的SQL砖运行时11.0及以上
选择错误的列或字段的引用集列确定的
select_star
条款。一列的列的集合,你可以参考。
指一组字段的列的列,您可以参考。如果你从一个排除所有字段
结构体
,结果是一个空结构体
。
每个名称必须引用一组列中包含的列,您可以引用或他们的田地。否则,砖SQL提出了一个UNRESOLVED_COLUMN错误。如果名字重叠或不独特,砖SQL提出了一个EXCEPT_OVERLAPPING_COLUMNS错误。
输入的来源
选择
。与发电机一起使用等功能
爆炸
,它生成一个虚拟表包含一个或多个行。横向视图
行适用于每个原始输出行。砖的SQL,从砖12.2运行时不建议使用这个条款。你应该调用表生成器函数作为价值table_reference。
过滤器的结果
从
基于提供的谓词的条款。表达式用于组行。这是与聚合函数一起使用(
最小值
,马克斯
,数
,总和
,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