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

从一个或多个 表格引用 组成一个结果集。 SELECT 子句可以是查询的一部分,查询还包含常用表表达式 (CTE)、设置操作和各种其他子句。

SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_clause } [, ...]
  FROM table_reference [, ...]
  [ LATERAL VIEW clause ]
  [ WHERE clause ]
  [ GROUP BY clause ]
  [ HAVING clause]
  [ QUALIFY clause ]
named_expression
   expression [ column_alias ]
star_clause
   [ { table_name | view_name } . ] * [ except_clause ]
except_clause
   EXCEPT ( { column_name | field_name } [, ...] )

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

选择表格引用中的所有匹配行。 默认情况下启用。

  • DISTINCT

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

  • named_expression

    具有可选指定名称的表达式。

  • expression

    计算得出值的一个或多个值、运算符和 SQL 函数的组合。

  • column_alias

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

  • star_clause

    用于命名 FROM 子句中所有可引用列的简写。 列的列表按 table_reference 的顺序和每个 table_reference 中的列的顺序排序。

    此列表不包含 _metadata 列。 必须显式引用它。

  • table_name

    如果存在,则将要命名的列限制为指定可引用表中的列。

  • view_name

    如果指定,则将要扩展的列限制为指定可引用视图中的列。

  • except_clause

    适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime 11.0 及更高版本

    可以选择从 select_star 子句中标识的可引用列集中删除列或字段。

  • column_name

    可引用的一组列中的一列。

  • field_name

    对可引用的一组列所包含的列中字段的引用。 如果从 STRUCT 中排除所有字段,则结果为空的 STRUCT

    每个名称都必须引用可引用的一组列中包含的列或其字段。 否则,Databricks SQL 会引发 UNRESOLVED_COLUMN 错误。 如果名称重叠或不是唯一的,Databricks SQL 会引发 EXCEPT_OVERLAPPING_COLUMNS 错误。

  • table_reference

    SELECT 的输入源。

  • LATERAL VIEW

    与生成器函数(例如 EXPLODE)结合使用,将生成包含一个或多个行的虚拟表。 LATERAL VIEW 将行应用于每个原始输出行。

  • WHERE

    根据提供的谓词筛选 FROM 子句的结果。

  • GROUP BY

    用于对行进行分组的表达式。 它与聚合函数(MINMAXCOUNTSUMAVG)结合使用,基于分组表达式和每个组中的聚合值对行进行分组。 将 FILTER 子句附加到聚合函数时,只会将匹配的行传递给该函数。

  • HAVING

    用于筛选由 GROUP BY 生成的行的谓词。 HAVING 子句用于在执行分组后对行进行筛选。 如果指定的 HAVING 不带 GROUP BY,则表示不带分组表达式的 GROUP BY(全局聚合)。

  • QUALIFY

    用于筛选窗口函数结果的谓词。 要使用 QUALIFY,SELECT 列表或 QUALIFY 子句中必须至少有一个窗口函数

    选择 Delta 表

    除标准 SELECT 选项外,Delta 表还支持本部分中介绍的按时间顺序查看选项。 有关详细信息,请参阅使用 Delta Lake 表历史记录

    AS OF 语法

    table_identifier TIMESTAMP AS OF timestamp_expression
    table_identifier VERSION AS OF version
    
  • timestamp_expression 可以是下列项中的任意一项:
    • '2018-10-18T22:15:12.013Z',即可以强制转换为时间戳的字符串
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18',即日期字符串
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • 本身就是时间戳或可强制转换为时间戳的任何其他表达式
    • version 是可以从 DESCRIBE HISTORY table_spec 的输出中获取的 long 值。
    • timestamp_expressionversion 都不能是子查询。

      > SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
      > SELECT * FROM delta.`/mnt/delta/events` VERSION AS OF 123
      

      使用 @ 语法来指定时间戳或版本。 时间戳必须采用 yyyyMMddHHmmssSSS 格式。 你可以通过在版本前附加一个 v@ 后指定版本。 例如,若要查询表 events 的版本 123,请指定 events@v123

      > SELECT * FROM events@20190101000000000
      > SELECT * FROM events@v123
      
      -- 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
      
    • CLUSTER BY 子句
    • 公用表表达式 (CTE)
    • DISTRIBUTE BY 子句
    • GROUP BY 子句
    • HAVING 子句
    • QUALIFY 子句
    • VALUES 子句
    • LATERAL VIEW 子句
    • LIMIT 子句
    • OFFSET 子句
    • ORDER BY 子句
    • PIVOT 子句
    • TABLESAMPLE 子句
    • set 运算符
    • SORT BY 子句
    • 表值函数 (TVF)
    • UNPIVOT 子句
    • WHERE 子句
    • WINDOW 子句
  •