在SQL Server中嵌套select语句

有人可以帮我理解为什么以下不起作用?

SELECT name FROM (SELECT name FROM agentinformation) 

我想我对SQL的理解是错误的,因为我会认为这将返回相同的东西

 SELECT name FROM agentinformation 

内部select语句不会创build外部SELECT语句然后查询的结果集吗?

你需要别名的子查询。

 SELECT name FROM (SELECT name FROM agentinformation) a 

或者更加明确

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

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

 SELECT name FROM (SELECT name FROM agentinformation) as a 

我们需要使子查询的别名,因为查询需要表格对象,我们将从一个别名到子查询。 从概念上讲,子查询结果被replace为外部查询。 由于我们需要在外部查询中使用表对象,我们需要做一个内部查询的别名。

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

  • WHEREexpression式[NOT] IN(子查询)
  • WHEREexpression式compare_operator [ANY | ALL](子查询)
  • WHERE [NOT] EXISTS(子查询)

检查更多的子查询规则和子查询types 。

嵌套子查询的更多例子 。

  1. IN / NOT IN – 在内部查询被执行之后,该运算符将内部查询的输出作为零或多个值,并将其发送到外部查询。 外部查询然后获取所有匹配的[IN运算符]或不匹配的[NOT IN运算符]行。

  2. ANY – [> ANY或ANY运算符获取由内部查询生成的值的列表,并获取大于列表的最小值的所有值。 该

例如> ANY(100,200,300),则ANY操作符将获取大于100的所有值。

  1. ALL – [> ALL或ALL运算符获取内部查询生成的值列表,并获取大于列表最大值的所有值。 该

例如> ALL(100,200,300),ALL操作符将获取大于300的所有值。

  1. EXISTS – EXISTS关键字产生一个布尔值[TRUE / FALSE]。 这EXISTS检查子查询返回的行的存在。