有人可以帮助我理解为什么以下不起作用?
SELECT name FROM (SELECT name FROM agentinformation)
我想我对SQL的理解是错误的,因为我会认为这将返回相同的东西
SELECT name FROM agentinformation
内部select语句是否创建了外部SELECT语句然后查询的结果集?
由Joe Stefanelli提供的Answer已经是正确的了 .
SELECT name FROM (SELECT name FROM agentinformation) as a
我们需要创建子查询的别名,因为查询需要表对象,我们将从别名到子查询获得 . 从概念上讲,子查询结果被替换为外部查询 . 由于我们需要外部查询中的表对象,我们需要创建内部查询的别名 .
包含子查询的语句通常采用以下格式之一:
WHERE表达式[NOT] IN(子查询)
WHERE表达式comparison_operator [ANY |全部](子查询)
WHERE [NOT] EXISTS(子查询)
检查更多subquery rules和subquery types .
More examples嵌套子查询 .
IN / NOT IN - 此运算符在执行内部查询后获取内部查询的输出,该查询可以是零个或多个值,并将其发送到外部查询 . 外部查询然后获取所有匹配的[IN运算符]或不匹配的[NOT IN运算符]行 .
ANY - [> ANY或ANY运算符获取内部查询生成的值列表,并获取大于列表最小值的所有值 . 该
例如> ANY(100,200,300),ANY运算符将获取大于100的所有值 .
例如> ALL(100,200,300),ALL运算符将获取大于300的所有值 .
您需要为子查询添加别名 .
SELECT name FROM (SELECT name FROM agentinformation) a
或者更明确
SELECT a.name FROM (SELECT name FROM agentinformation) a
2 回答
由Joe Stefanelli提供的Answer已经是正确的了 .
我们需要创建子查询的别名,因为查询需要表对象,我们将从别名到子查询获得 . 从概念上讲,子查询结果被替换为外部查询 . 由于我们需要外部查询中的表对象,我们需要创建内部查询的别名 .
包含子查询的语句通常采用以下格式之一:
WHERE表达式[NOT] IN(子查询)
WHERE表达式comparison_operator [ANY |全部](子查询)
WHERE [NOT] EXISTS(子查询)
检查更多subquery rules和subquery types .
More examples嵌套子查询 .
IN / NOT IN - 此运算符在执行内部查询后获取内部查询的输出,该查询可以是零个或多个值,并将其发送到外部查询 . 外部查询然后获取所有匹配的[IN运算符]或不匹配的[NOT IN运算符]行 .
ANY - [> ANY或ANY运算符获取内部查询生成的值列表,并获取大于列表最小值的所有值 . 该
例如> ANY(100,200,300),ANY运算符将获取大于100的所有值 .
例如> ALL(100,200,300),ALL运算符将获取大于300的所有值 .
您需要为子查询添加别名 .
或者更明确