子查询规则

子查询受下列限制的制约:

  • 通过比较运算符引入的子查询选择列表只能包括一个表达式或列名称(对 SELECT * 执行的 EXISTS 或对列表执行的 IN 子查询除外)。

  • 如果外部查询的 WHERE 子句包括列名称,它必须与子查询选择列表中的列是联接兼容的。

  • ntext、text 和 image 数据类型不能用在子查询的选择列表中。

  • 由于必须返回单个值,所以由未修改的比较运算符(即后面未跟关键字 ANY 或 ALL 的运算符)引入的子查询不能包含 GROUP BY 和 HAVING 子句。

  • 包含 GROUP BY 的子查询不能使用 DISTINCT 关键字。

  • 不能指定 COMPUTE 和 INTO 子句。

  • 只有指定了 TOP 时才能指定 ORDER BY。

  • 不能更新使用子查询创建的视图。

  • 按照惯例,由 EXISTS 引入的子查询的选择列表有一个星号 (*),而不是单个列名。因为由 EXISTS 引入的子查询创建了存在测试并返回 TRUE 或 FALSE 而非数据,所以其规则与标准选择列表的规则相同。

请参阅

概念