我没有特别的问题,所以我希望我的问题是有效的。我正在尝试了解有关 LEFT JOIN 的更多信息。
我知道 LEFT JOIN 会将左侧表格的列与右侧表格相匹配。
FROM logs LEFT JOIN logins on logins.login_id = logs.user_id
LEFT JOIN city on logs.city_id = cities.city_id
LEFT JOIN factory on logs.factory_id = factory.factory_id
LEFT JOIN storage on logs.storage_id = storage.storage_id
SQL 以什么特定顺序处理这个问题。请概述正在发生的事情。
谢谢。
补充一下:我对仅涉及一个 LEFT JOIN 时会发生的情况充满信心,但不太确定当最后添加更多 LEFT JOIN 时会发生什么。我假设在虚拟现实中,SQL 服务器将执行第一个 LEFT JOIN,返回结果,然后在下一个 LEFT JOIN 中使用该结果,依此类推。
最佳答案
数据库引擎维护查询的连接顺序。
这么说
1)A left join B left Join C is not same as
2)A left join C left join B
In 1) A is joined to B first and then joined to C
2) A is joined to C first and then joined to C
注意:以上内容在语义上是正确的。数据库引擎可以选择任何其他连接顺序来优化查询,同时根据语义保持正确的结果。因此,在某些数据库引擎中,查询计划会让您感到困惑。
关于sql - sql如何处理多个LEFT JOINS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29644492/