我有一个sql查询,如下所示-
select
*
from A
inner join AA on A.id = AA.aid
inner join AAA on
(
select B.bid, B.bname
from B
inner join C on B.id = C.bid
where C.aaid = AA.id
) as B1 on A.id = B1.aid
这就产生了一个错误
“where子句”中的未知列“aa.id”
如果有人能告诉我原因并给我一个可能的解决方案,那将非常有帮助。
3条答案
按热度按时间bakd9h0s1#
据我所知,
由于缺乏样本数据,我们假设。
如果查询需要更新,请回复我。
jhkqcmku2#
我相信你需要这样的东西
在mysql的join子查询中不可能引用外部别名。在postgresql中,您可以使用
CROSS JOIN LATERAL
在sql server中CROSS APPLY
但是,mysql中没有这样的东西。mrphzbgm3#
评论太长了,所以。。。
假设您没有在
FROM
子句作为特殊视图,但使其成为显式视图B1
(与CREATE VIEW
). 那么你的问题是说明你的语法是错的。
而且
B1
select不包含aid
,只有一个bid
和一个bname
.最后
ON
条款AAA
不包含对表的任何引用AAA
,因此这实际上不是该表的联接条件。这就是你问题的答案。不过,我无法向您展示正确的查询,因为您试图实现的目标完全不清楚。请详细说明。这可能很简单,你把事情复杂化了:-)