gpt4 book ai didi

mysql - 连接多个表(特殊情况)

转载 作者:行者123 更新时间:2023-12-01 00:26:52 25 4
gpt4 key购买 nike

我试图想出一个逻辑来实现这个 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

最佳答案

SELECT  a.*
FROM table1 a
INNER JOIN
(
SELECT num, info FROM table2
UNION
SELECT num, info FROM table3
) b ON a.num = b.NUM

SQLFiddle Demo

更新 1

SELECT  a.num numA, a.info infoA,
b.num numB, b.info infoB,
c.num numC, c.info infoC
FROM table1 a
LEFT JOIN table2 b
ON a.num = b.num
LEFT JOIN table3 c
ON a.num = c.num
ORDER BY a.num

SQLFiddle Demo

关于mysql - 连接多个表(特殊情况),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13043595/

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