Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
返回两个查询块的集合差异。
[ 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 查询块,构成 SELECT 语句或查询表达式(可能嵌套)。
except-query-block 查询块,构成 SELECT 语句或查询表达式(可能嵌套)。
FOR XML 子句 有关 FOR XML 子句的说明,请参见SELECT 语句。
OPTION 子句 此子句用于指定执行语句时的提示。支持以下提示:
OPTION( isolation_level = ... )
有关这些选项的说明,请参见OPTION 子句,SELECT 语句。
EXCEPT 语句返回 main-query-block 中的所有行,同时出现在 except-query-block 中的行除外。如果希望在结果中 main-query-block 的重复行不作为重复行出现,请指定 EXCEPT 或 EXCEPT DISTINCT。否则,请指定 EXCEPT ALL。请注意,查询块可能嵌套。
单独使用 EXCEPT 等同于 EXCEPT DISTINCT。
main-query-block 和 except-query-block 必须兼容 UNION;它们在各自的 SELECT 列表中必须具有相同数量的项目,并且各表达式的类型可以进行比较。如果两个选择列表中的相应项具有不同的数据类型,则 SQL Anywhere 为结果中的相应列选择数据类型,并自动相应地转换各 query-block 中的列。
EXCEPT ALL 实现包差异而不是集合差异。例如,如果 main-query-block 包含具有特定值的 5 个(重复)行,而 except-query-block 包含具有相同值的 2 个重复行,则 EXCEPT ALL 将返回 3 行。
如果 except-query-block 不包含重复行,则 EXCEPT 的结果与 EXCEPT ALL 的结果相同。
显示的列名与为第一个 query-block 显示的列名相同,这些名称用于确定与 ORDER BY 子句匹配的表达式名称。另一种自定义结果集列名的方法是使用公用表表达式(WITH 子句)。
必须具有对各 query-block 的 SELECT 权限。
无
SQL/2008 EXCEPT DISTINCT 是 SQL/2008 标准的核心功能;EXCEPT ALL 构成可选 SQL 语言功能 F304。为 EXCEPT 显式指定 DISTINCT 关键字是 SQL/2008 标准的可选 SQL 语言功能 T551。为 EXCEPT 指定 ORDER BY 子句是 SQL 语言功能 F850。包含 ORDER BY 子句的 query-block 构成 SQL/2008 语言功能 F851。包含行限制子句(SELECT TOP 或 LIMIT)的查询块构成可选 SQL 语言功能 F857 或 F858(具体取决于上下文)。FOR XML 子句和 OPTION 子句是服务商扩充。
Transact-SQL Adaptive Server Enterprise 不支持 EXCEPT。但是,EXCEPT ALL 和 EXCEPT DISTINCT 可用在受 SQL Anywhere 支持的 Transact-SQL 方言中。
有关 EXCEPT 用法的示例,请参见集合运算符和 NULL。