【发布时间】:2023-03-28 18:05:01
【问题描述】:
我试图想出一个逻辑来实现这个mysql 查询,但我想不出任何东西或在互联网上找到任何东西。我的任务是Join 两个或多个表并返回它的匹配字段。但是,如果有两个表上匹配行的三个表也必须显示。假设我有这 3 张桌子,
Table1-
num |info
----------
1 |aaaaa
2 |bbbb
3 |ccc
4 |dddd
4 |dddd
5 |eeee
Table2-
num |info
----------
2 |bbbb
3 |ccc
4 |dddd
5 |eeee
Table3-
num |info
----------
1 |aaaaa
2 |bbbb
6 |ffff
7 |gggg
我想将这三个表连接起来,得到如下结果,
Result-
num |info num |info num |info
----------- ----------- ----------
1 |aaaaa NULL|NULL 1 |aaaaa
2 |bbbb 2 |bbbb 2 |bbbb
3 |ccc 3 |ccc NULL|NULL
4 |dddd 4 |dddd NULL|NULL
4 |dddd 4 |dddd NULL|NULL
5 |eeee 5 |eeee NULL|NULL
我有这个查询,它只显示在所有三个表上。
SELECT a . * , b. * , c . *
FROM tbl_1 a
JOIN tbl_2 b ON a.num = b.num
JOIN tbl_3 c ON a.num = c.num
ORDER BY a.num, b.num
但我想要的是即使值出现在两个表中也能显示。
非常感谢。如果在此之前解决了这个问题,这将有助于为我指明正确的方向:) 再次感谢
表结构更新
Table1-
num |info
----------
1 |aaaaa
2 |bbbb
3 |ccc
3 |ccc
4 |dddd
Table2-
num |info
----------
1 |aaaaa
3 |ccc
4 |dddd
5 |eeee
6 |ffff
Table3-
num |info
----------
1 |aaaaa
6 |ffff
2 |bbbb
在这样的场景中,记录 6 |ffff 不会显示,
期望的输出更新
我想要得到的结果是,
Result-
num |info num |info num |info
----------- ----------- ----------
1 |aaaaa 1 |aaaaa 1 |aaaaa
2 |bbbb NULL|NULL 2 |bbbb
3 |ccc 3 |ccc NULL|NULL
3 |ccc 3 |ccc NULL|NULL
4 |dddd 4 |dddd NULL|NULL
NULL|NULL 6 |ffff 6 |ffff
【问题讨论】:
-
您只想显示table1 中
num包含在table2 或table3 上的记录吗? -
@JohnWoo 谢谢你的回复..如果可能的话,我需要考虑每张桌子:)
-
在下面查看我的答案,它基于您的示例和期望的结果
-
@Hasitha 所以请更正您想要的结果或选择,因为您想要的结果包含 2 列,而您的选择将输出 6 列。你的问题不清楚
-
@SirRufo 很抱歉我会编辑我的问题