在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 。
嵌套子查询的更多例子 。
-
IN / NOT IN – 在内部查询被执行之后,该运算符将内部查询的输出作为零或多个值,并将其发送到外部查询。 外部查询然后获取所有匹配的[IN运算符]或不匹配的[NOT IN运算符]行。
-
ANY – [> ANY或ANY运算符获取由内部查询生成的值的列表,并获取大于列表的最小值的所有值。 该
例如> ANY(100,200,300),则ANY操作符将获取大于100的所有值。
- ALL – [> ALL或ALL运算符获取内部查询生成的值列表,并获取大于列表最大值的所有值。 该
例如> ALL(100,200,300),ALL操作符将获取大于300的所有值。
- EXISTS – EXISTS关键字产生一个布尔值[TRUE / FALSE]。 这EXISTS检查子查询返回的行的存在。