gpt4 book ai didi

mysql - 3个表在mysql中使用左连接连接

转载 作者:行者123 更新时间:2023-11-29 00:05:46 25 4
gpt4 key购买 nike

我总共有 4 张 table 。下面的数据是虚拟数据,但结构与我的原始数据库相同。

Table -- ms1    Table -- ms2          Table -- ms3

msoneid mstwoid msthreeid
3 11 79
4 12 83
5 14 84
6 17 85

Master table -- ms

rid hid tie
11 3 33
11 5 44
12 12 55
12 84 66
13 79 77
13 17 88

我想要什么

hid           tie
3 33
4 0
5 44
6 0
11 0
12 55
14 0
17 88
79 77
83 0
84 66
85 0

我的查询是

select * from ms where rid in (11,12,13)​​ 这并没有给我其他 3 个表中缺少的 id,显然是因为它没有连接。我尝试使用 left加入,但我搞砸了。

非常欢迎任何帮助/提示/示例。提前致谢。

最佳答案

可能联合查询会在这里起作用

SELECT ms1.msoneid as hid, ms.tie FROM ms1 LEFT JOIN ms ON ms1.msoneid=ms.hid WHERE ms.rid in(11,12,13)
UNION
SELECT ms2.mstwoid as hid, ms.tie FROM ms2 LEFT JOIN ms ON ms2.mstwoid=ms.hid WHERE ms.rid in(11,12,13)
UNION
SELECT ms3.msthreeid as hid, ms.tie FROM ms3 LEFT JOIN ms ON ms3.msthreeid=ms.hid WHERE ms.rid in(11,12,13)

这是一个 sql fiddle

要对记录进行排序,您可以在子查询之上进行一系列查询。

SELECT * FROM (
SELECT ms1.msoneid as hid, ms.tie FROM ms1 LEFT JOIN ms ON ms1.msoneid=ms.hid WHERE ms.rid in(11,12,13)
UNION
SELECT ms2.mstwoid as hid, ms.tie FROM ms2 LEFT JOIN ms ON ms2.mstwoid=ms.hid WHERE ms.rid in(11,12,13)
UNION
SELECT ms3.msthreeid as hid, ms.tie FROM ms3 LEFT JOIN ms ON ms3.msthreeid=ms.hid WHERE ms.rid in(11,12,13)
) as tempTbl
ORDER BY tempTbl.hid;

关于mysql - 3个表在mysql中使用左连接连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27531139/

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