SQL Server中的嵌套select语句

Nested select statement in SQL Server

为什么下面的内容不起作用?

1
SELECT name FROM (SELECT name FROM agentinformation)

我想我对SQL的理解是错误的,因为我本以为这会返回与

1
SELECT name FROM agentinformation

内部select语句是否创建了外部select语句随后查询的结果集?


您需要为子查询创建别名。

1
SELECT name FROM (SELECT name FROM agentinformation) a

或者更明确地说

1
SELECT a.name FROM (SELECT name FROM agentinformation) a


Joe Stefanelli提供的答案已经是正确的。

1
SELECT name FROM (SELECT name FROM agentinformation) AS a

我们需要创建子查询的别名,因为查询需要表对象,我们将从创建别名到子查询。从概念上讲,子查询结果被替换到外部查询中。由于我们在外部查询中需要表对象,所以需要为内部查询创建一个别名。

包含子查询的语句通常采用以下格式之一:

  • 其中表达式[非]在(子查询)
  • 其中表达式比较_operator[any all](子查询)
  • 其中[不]存在(子查询)

检查更多子查询规则和子查询类型。

嵌套子查询的更多示例。

  • In/Not In–此运算符在执行内部查询后获取内部查询的输出,该输出可以是零个或多个值,并将其发送到外部查询。然后,外部查询获取所有匹配的[in operator]行或不匹配的[not in operator]行。

  • any–[>any或any运算符获取内部查询生成的值列表,并获取大于列表最小值的所有值。这个

  • 例如,>any(100200300),any运算符将获取所有大于100的值。

  • all–[>all或all运算符获取内部查询生成的值列表,并获取大于列表最大值的所有值。这个

    例如,>all(100200300),all运算符将获取所有大于300的值。

  • exists-exists关键字生成布尔值[true/false]。这将检查子查询返回的行是否存在。