Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语句 » SQL 语句 (E-O)

 

EXCEPT 子句

返回位于 EXCEPT 之前的查询块结果集中的行,这些行在 EXCEPT 之后的查询块结果集中不存在。

语法
[ WITH temporary-views ] main-query-block
  EXCEPT [ ALL | DISTINCT ] except-query-block
[ ORDER BY  [ integer | select-list-expression-name ] [ ASC | DESC ], ... ]
[ FOR XML xml-mode ]
[ OPTION( query-hint, ... ) ]
query-hint :
MATERIALIZED VIEW OPTIMIZATION option-value
| FORCE OPTIMIZATION
| option-name = option-value

main-query-block:查询块。请参见SQL 语法中的常见元素

except-query-block:查询块。请参见SQL 语法中的常见元素

option-name : identifier
option-value : hostvar (indicator allowed), string, identifier, or number
参数
  • main-query-block   要将一个或多个查询块与其进行比较的查询块。

  • except-query-block   位于 EXCEPT 子句右侧的查询块。except-query-block 的结果将与 main-query-block 的结果进行比较,以标识仅存在于 main-query-block 中的行。

  • EXCEPT 子句   如果 main-query-block 中存在与 except-query-block 中的行不匹配的重复行,则在指定了 EXCEPT ALL 的情况下重复行会出现在结果中。要消除结果中的重复行,则指定 EXCEPT 或 EXCEPT DISTINCT。

  • OPTION 子句   此子句用于指定执行语句时的提示。支持以下提示:

    • MATERIALIZED VIEW OPTIMIZATION option-value
    • FORCE OPTIMIZATION
    • option-name = option-value

    有关这些选项的说明,请参见SELECT 语句的 OPTIONS 子句。

注释

使用 EXCEPT 子句将 main-query-block 的结果与一个或多个 except-query-block 的结果进行比较,然后返回仅存在于 main-query-block 中的行。如果希望在结果中 main-query-block 的重复行不作为重复行出现,请指定 EXCEPT 或 EXCEPT DISTINCT。否则,请指定 EXCEPT ALL。

EXCEPT 与 EXCEPT DISTINCT 相同。

各个 query-block 在选择列表中必须具有相同数目的项目。

EXCEPT ALL 的结果集中的行数等于各个查询的结果集行数之间的差。

EXCEPT 的结果和 EXCEPT ALL 相同,只是在使用 EXCEPT 时,重复的行在计算结果集间的差异之前已被排除。

如果两个选择列表中的相应项具有不同的数据类型,则 SQL Anywhere 为结果中的相应列选择数据类型,并自动相应地转换各 query-block 中的列。UNION 的第一个查询说明用于确定要与 ORDER BY 子句匹配的名称。

显示的列名与为第一个 query-block 显示的列名相同。另一种自定义结果集列名的方法是在 query-block 上使用 WITH 子句。

权限

必须具有对各 query-block 的 SELECT 权限。

副作用

另请参见
标准和兼容性
  • SQL/2003   EXCEPT DISTINCT 是核心特性。EXCEPT ALL 是特性 F304。

示例

有关 EXCEPT 用法的示例,请参见集合运算符和 NULL