适用于: Databricks SQL
Databricks Runtime
收集要从子查询返回的列,并执行表达式、聚合和去重操作。
语法
SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_clause } [, ...]
参数
-
提示可帮助 Azure Databricks 优化器做出更好的规划决策。 Azure Databricks 支持使用会影响联接策略的选择和数据的重新分区的提示。
ALL
从表引用中选择所有匹配行。 默认启用。
DISTINCT
删除结果中的重复项后,从表引用中选择所有匹配的行。
named_expression
具有可选分配名称的表达式。
-
一个或多个值、运算符和 SQL 函数的组合,其计算结果为一个值。
-
命名表达式结果的可选列标识符。 如果未提供
column_alias
,Databricks SQL 会派生一个。
-
-
一种简略写法,可用于命名
FROM
子句中的所有可引用列,或FROM
子句中特定表引用的列或字段。
例子
-- select all referencable columns from all tables
> SELECT * FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3 4
-- select all referencable columns from one table
> SELECT t2.* FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
3 4
-- select all referencable columns from all tables except t2.c4
> SELECT * EXCEPT(c4) FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3
-- select all referencable columns from a table, except a nested field.
> SELECT * EXCEPT(c2.b) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { "a" : 2 }
-- Removing all fields results in an empty struct
> SELECT * EXCEPT(c2.b, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { }
-- Overlapping names result in an error
> SELECT * EXCEPT(c2, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
Error: EXCEPT_OVERLAPPING_COLUMNS