gpt4 book ai didi

mysql - 多个 INNER JOIN 返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:57 25 4
gpt4 key购买 nike

我正在努力连接 3 个表。

table1.
grp_id | email_id
1 | 3
1 | 58

table2.
sam_msg_id | sam_subject
3 | Funnel

table3.
id | subject
58 | testing check


Desired Output:

id |grp_id|email_id|sam_subject|subject |
184|1 |3 |funnel | |
185|1 |58 | |testing check|

我试过的查询:

SELECT table1.*, table2.sam_subject, table3.* 
FROM table1
INNER JOIN table2
ON table2.sam_msg_id = table1.email_id
INNER JOIN table3
ON table3.id = table1.email_id
WHERE table1.grp_id = '1'

我在这里要做的是从 table2 和 table3 中获取主题列表及其 id,其中 id 位于 table1 的 email_id 下。

当我尝试仅通过检查 table2 中的数据来使用一个内部联接来执行此操作时,它是有效的。

我不熟悉使用内部联接,因此我看不出我做错了什么。

我正在使用 MySQL。

最佳答案

听起来你需要一个LEFT JOIN

SELECT table1.*, table2.sam_subject, table3.* 
FROM table1
LEFT JOIN table2
ON table2.sam_msg_id = table1.email_id
LEFT JOIN table3
ON table3.id = table1.email_id
WHERE table1.grp_id = '1'

根据您的编辑,以下应该会为您提供所需的结果:

SELECT t1.grp_id, 
t1.email_id,
coalesce(t2.sam_subject, '') sam_subject,
coalesce(t3.subject, '') subject
FROM t1
left JOIN t2
ON t2.sam_msg_id = t1.email_id
left JOIN t3
ON t1.email_id = t3.id
WHERE t1.grp_id = '1'

参见 SQL Fiddle with Demo

关于mysql - 多个 INNER JOIN 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11942551/

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