三重嵌套mysql选择在应该返回结果时不返回任何结果
此SQL查询三重嵌套mysql选择在应该返回结果时不返回任何结果,mysql,sql,Mysql,Sql,此SQL查询 (SELECT * FROM OperatorRoster as roster INNER JOIN ( SELECT *, count(*) as activeSlots FROM Connectors group by (operator)) as connectors ON connectors.operator = roster.operator) 工作正常并返回我需要的所有值,但我需要在新查询中使用result 但如果我尝试使用它: SELECT *
(SELECT * FROM OperatorRoster as roster
INNER JOIN ( SELECT *, count(*) as activeSlots FROM Connectors
group by (operator)) as connectors
ON connectors.operator = roster.operator)
工作正常并返回我需要的所有值,但我需要在新查询中使用result
但如果我尝试使用它:
SELECT * FROM (SELECT * FROM OperatorRoster as roster
INNER JOIN ( SELECT *, count(*) as activeSlots FROM Connectors
group by (operator)) as connectors
ON connectors.operator = roster.operator) as q
它什么也不说。
如何查询此子查询?由于您使用的是内部联接,是否确实存在其中的行
connectors.operator=花名册.operator
如果没有符合该要求的行,则查询不应返回任何行您缺少主联接的ON子句
on q.___= Operators.___
结果表明,由于我对运算符进行了联接,但选择了所有字段
(SELECT * FROM OperatorRoster as roster
INNER JOIN ( SELECT *, count(*) as activeSlots FROM Connectors
group by operator) as connectors
ON connectors.operator = roster.operator)
它返回两个名称相同的字段“connectors.operator”和“floster.operator”,由于最后一次选择无法继承独家新闻,因此会发生冲突。
不知道为什么它没有返回错误,但我只选择了一个操作符字段来修复它 “每个派生表都必须有自己的别名。”是的,但它仍然不起作用。为了可读性,我只是去掉最后一个别名,它不会返回错误。如果没有错误(顺便说一句,如何检查?),那么如果查询的结果是零行,因此没有数据。您缺少主联接的ON子句关于q.--=运算符。---`@Scotch我想这看起来很奇怪,因为您已经习惯了Oracle(唯一一个在对表进行别名时不喜欢
AS
的DBMS),它是可选的,但却是标准的,并且用于所有其他DBMS(SQL Server、MySQL、Postgres、DB2等)在列别名时也是可选的。是的,但这没有区别,选择仍然有效?