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

标签 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 子句中使用?

最佳答案

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

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

关于MySQL:子查询中的外部别名:WHERE 和 ON 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869629/

相关文章:

mysql - 仅当字符串不存在时才添加

使用主键 IN 语句删除时的 Mysql Innodb 死锁

MySQL SELECT 电子邮件,其中字段包含一个值

mysql - 计算 X 天内在不同表中输入了多少行的最有效方法?

mysql - 更新 mysql 数据库结构(表配置+过程/函数)并保留数据

MYSQL 复杂查询select语句

php - 一种在MySQL数据库中查找表单表的方法

sql - Oracle SQL 根据列值将连续数字分配给一个子集

SQL Server Express 性能问题

sql - 如何提出条件?