首页 文章

SQL Server中的嵌套select语句

提问于
浏览
302

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

SELECT name FROM (SELECT name FROM agentinformation)

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

SELECT name FROM agentinformation

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

2 回答

  • 31

    由Joe Stefanelli提供的Answer已经是正确的了 .

    SELECT name FROM (SELECT name FROM agentinformation) as a
    

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

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

    • WHERE表达式[NOT] IN(子查询)

    • WHERE表达式comparison_operator [ANY |全部](子查询)

    • WHERE [NOT] EXISTS(子查询)

    检查更多subquery rulessubquery types .

    More examples嵌套子查询 .

    • 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检查子查询返回的行的存在 .
  • 531

    您需要为子查询添加别名 .

    SELECT name FROM (SELECT name FROM agentinformation) a
    

    或者更明确

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

相关问题