You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL多表查询结果合并为单表格式(类全外连接实现)

问题描述

现有三张数据表T1、T2、T3,结构及数据如下:

T1

id, count
1, 10
2, 20
3, 30

T2

id, status
1, 100
2, 200
3, 300
4, 400

T3

id, refresh
2, 2000
3, 3000

需要将三张表的第二列合并为一个结果集,得到包含id、count、status、refresh的结果,无对应数据的位置填充NULL,预期结果如下:

id, count, status, refresh
1,   10,   100,    NULL
2,   20,   200,    2000
3,   30,   300,    3000
4,   NULL, 400,    NULL

不确定全外连接是否支持该格式,寻求更优实现方法。

解决方案

以下是实现该需求的SQL语句:

SELECT COALESCE(T1.id, T2.id , T3.id) AS id, T1.count, T2.status, T3.refresh
FROM T1 
LEFT OUTER JOIN T2 USING (id)
LEFT OUTER JOIN T3 USING (id)
UNION 
SELECT COALESCE(T1.id, T2.id , T3.id) AS id, T1.count, T2.status, T3.refresh
FROM T2
LEFT OUTER JOIN T1 USING (id)
LEFT OUTER JOIN T3 USING (id)
UNION 
SELECT COALESCE(T1.id, T2.id , T3.id) AS id, T1.count, T2.status, T3.refresh
FROM T3 
LEFT OUTER JOIN T1 USING (id)
LEFT OUTER JOIN T2 USING (id)

该方案通过UNION组合三个左连接查询的结果,确保所有表中的id都被覆盖;利用COALESCE函数确定最终的id值,无匹配数据的字段自动填充NULL,完全符合预期结果要求。

内容的提问来源于stack exchange,提问作者TheDataGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 06:05:34