gpt4 book ai didi

mysql - 第一个 LEFT JOIN 是否适用于多个 JOIN?

转载 作者:行者123 更新时间:2023-11-29 06:11:43 26 4
gpt4 key购买 nike

我有多个JOIN,其形式为

SELECT * FROM column1
LEFT JOIN column2 USING(id)
JOIN column3 USING(name)
JOIN column4 USING(info)
WHERE column1.id = 44

如果将LEFT JOIN更改为JOIN;出于明显的原因,如果没有column2.id,查询将不会返回任何内容。主要数据为第1列,其他为支持数据;因此,我想在 column1.id 存在的情况下检索数据。

我的问题是:第一个LEFT JOIN是否保证查询返回column1.id存在的column1值,无论后续JOIN如何(例如,当column3.name不存在)?或者我也需要将下一个(所有)JOIN 更改为 LEFT JOIN

最佳答案

您有几个选择,因为您的问题的直接答案是

将所有后续连接更改为 LEFT JOIN。

SELECT * FROM column1
LEFT JOIN column2 USING(id)
LEFT JOIN column3 USING(name)
LEFT JOIN column4 USING(info)
WHERE column1.id = 44

如果可能,重新安排查询...

SELECT * FROM column1
JOIN column3 USING(name)
JOIN column4 USING(info)
LEFT JOIN column2 USING(id)
WHERE column1.id = 44

或者...

SELECT * FROM column1
JOIN
(
column3
JOIN column4 USING(info)
LEFT JOIN column2 USING(id)
)
USING(name)
WHERE column1.id = 44


顺便说一句,我会避免自然连接和 USING 语法。逻辑不太透明,更容易出现错误,更容易在以后被破坏(如果您将一个字段添加到与 USING 选项中的字段重复的表之一),等等。

关于mysql - 第一个 LEFT JOIN 是否适用于多个 JOIN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8805985/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com