SELECT 子句

适用于:勾选标记为“是” Databricks SQL 勾选标记为“是” Databricks Runtime

收集要从子查询返回的列,并执行表达式、聚合和去重操作。

语法

SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_clause } [, ...]

参数

  • 提示

    提示可帮助 Azure Databricks 优化器做出更好的规划决策。 Azure Databricks 支持使用会影响联接策略的选择和数据的重新分区的提示。

  • ALL

    从表引用中选择所有匹配行。 默认启用。

  • DISTINCT

    删除结果中的重复项后,从表引用中选择所有匹配的行。

  • named_expression

    具有可选分配名称的表达式。

    • 表达式

      一个或多个值、运算符和 SQL 函数的组合,其计算结果为一个值。

    • column_alias

      命名表达式结果的可选列标识符。 如果未提供 column_alias,Databricks SQL 会派生一个。

  • star_clause

    一种简略写法,可用于命名 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