MySQL:子查询中的外部别名:WHERE和ON之间的差异

时间:2014-05-26 11:57:53

标签: mysql sql

尽管有许多类似的问题,但我没有找到答案。

我的查询:

SELECT bg2.id FROM big_table bg1
JOIN middle_table md ON  bg1.url_id = md.id1
JOIN big_table bg2  ON bg2.url_id = md.id2
AND [a lot of conditions]
AND bg2.dependency_to_other_table NOT IN (
    SELECT DISTINCT ot.id FROM big_table bg
    JOIN other_table ot ON bg.dependency = ot.id
    -- AND bg.value = bg1.value DOESN'T WORK
    WHERE bg.value = bg1.value -- WORKS CORRECT
);

问题: 为什么我不能在ON子句中使用外部别名,但可以在WHERE子句中使用?

1 个答案:

答案 0 :(得分:1)

我相信你不能在一个连接语句中加入不同的表。

bg .dependency = ot .id vs bg .value = bg1 .value