为什么下面的不能工作?
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 *,(SELECT count(id) FROM products WHERE user_id = users.id) as products_count from users ORDER BY products_count DESC, ID DESC LIMIT 200
其他回答
试试这个
'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
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 name FROM (SELECT name FROM agentinformation) a
或者更明确地说
SELECT a.name FROM (SELECT name FROM agentinformation) a