为什么下面的不能工作?
SELECT name FROM (SELECT name FROM agentinformation)
我猜我对SQL的理解是错误的,因为我本以为这将返回相同的东西
SELECT name FROM agentinformation
内部select语句创建的结果集不是由外部select语句查询的吗?
为什么下面的不能工作?
SELECT name FROM (SELECT name FROM agentinformation)
我猜我对SQL的理解是错误的,因为我本以为这将返回相同的东西
SELECT name FROM agentinformation
内部select语句创建的结果集不是由外部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
我们需要为子查询创建别名,因为查询需要一个表对象,我们将通过为子查询创建别名来获得这个表对象。从概念上讲,子查询结果被替换到外部查询中。由于在外部查询中需要一个表对象,因此需要为内部查询创建别名。
包含子查询的语句通常采用以下形式之一:
WHERE表达式[NOT] IN(子查询) WHERE表达式comparison_operator [ANY | ALL](子查询) WHERE [NOT] EXISTS(子查询)
检查更多子查询规则和子查询类型。
嵌套子查询的更多示例。
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检查子查询返回的行是否存在。
试试这个
'select *,(SELECT count(id) FROM products WHERE user_id = users.id) as products_count from users ORDER BY products_count DESC, ID DESC LIMIT 200