查询

从一个或多个表中检索结果集。

适用于:check marked yes Databricks SQL check marked yes Databricks Runtime

语法

[ common_table_expression ]
  { subquery | set_operator }
  [ ORDER BY clause | { [ DISTRIBUTE BY clause ] [ SORT BY clause ] } | CLUSTER BY clause ]
  [ WINDOW clause ]
  [ LIMIT clause  ]
  [ OFFSET clause ]

subquery
{ SELECT clause |
  VALUES clause |
  ( query ) |
  TABLE [ table_name | view_name ]}

参数

  • 公用表表达式

    公用表表达式 (CTE) 是一个或多个命名查询,可在主查询块内重复使用多次,以避免重复计算或提高复杂嵌套查询的可读性。

  • subquery

    生成中间结果集的几个构造之一。

    • SELECT

      SELECT FROM WHERE 模式组成的子查询。

    • 指定了内联临时表。

    • ( query )

      查询的嵌套调用,其中可能包含集合运算符或公用表表达式。

    • TABLE

      返回整个表或视图。

      如果找不到表或视图,Azure Databricks 会引发 TABLE_OR_VIEW_NOT_FOUND 错误。

  • set_operator

    使用 UNIONEXCEPTINTERSECT 运算符组合子查询的构造。

  • ORDER BY

    查询的完整结果集的行顺序。 跨分区对输出行进行排序。 此参数与 SORT BYCLUSTER BYDISTRIBUTE BY 互斥,不能一起指定。

  • DISTRIBUTE BY

    一组表达式,作为对结果行进行重新分区的依据。 此参数与 ORDER BYCLUSTER BY 互斥,不能一起指定。

  • SORT BY

    用于对每个分区中的行进行排序的排序依据。 此参数与 ORDER BYCLUSTER BY 互斥,不能一起指定。

  • CLUSTER BY

    一组表达式,用于对行进行重新分区和排序。 使用此子句与同时使用 DISTRIBUTE BYSORT BY 的效果相同。

  • LIMIT

    语句或子查询可返回的最大行数。 此子句通常与 ORDER BY 结合使用来生成确定的结果。

  • OFFSET

    适用于:check marked yes Databricks SQL SQL 仓库版本 2022.35 或更高版本 check marked yes Databricks Runtime 11.2 及更高版本

    跳过语句或子查询返回的行数。 此子句大多与 LIMIT 结合使用,以对结果集进行分页,与 ORDER BY 结合使用以产生确定的结果。

    注意

    使用 LIMITOFFSET 对结果集进行分页时,跳过的行仍会得到处理。 这些行只是在结果集中被禁止显示。 对于资源密集型查询,不建议使用此技术进行分页。

  • WINDOW

    定义可由 select_query 中的多个窗口函数共享的命名窗口规范。