【发布时间】:2016-09-04 21:37:52
【问题描述】:
我看过有关如何在 MySQL 中对 2 个表进行完全联接的文章。我还阅读了this 的多个表,但这是我的独特问题。
我有多个临时表(SQL 查询的结果,但为简单起见,下面显示为表)
Table1
ID Value1
1 A
2 B
Table2
ID Value2
2 C
3 D
Table3
ID Value3
1 E
3 F
Table4
....
等等(至少 10 个表)。我需要的是这个
ID Value1 Value2 Value3 Value4 ....
1 A E
2 B C
3 D F
4 .......
尝试在没有 FULL 连接的情况下执行此操作似乎非常复杂。我可以在 MySQL 中实现这一目标的最简单方法是什么?
【问题讨论】:
-
你是说你想从所有这些表中获取而不使用连接?
-
这应该可以解决问题: SELECT main.ID, t1.Value1, t2.Value2, t3.Value3, FROM ( SELECT DISTINCT IFNULL(t1.ID, IFNULL(t2.ID, t3.ID )) ID FROM TABLE1 t1, TABLE2 t2, TABLE3 t3) 主左连接 TABLE1 t1 ON main.ID = t1.ID 左连接 TABLE2 t2 ON main.ID = t2.ID 左连接 TABLE3 t3 ON main.ID = t3.ID
-
@KP - 我对使用联接持开放态度,但如果没有 MySQL 不提供的完整外部联接功能,我似乎无法找到一种优雅的方式来实现这一点。所以我愿意接受任何建议。
-
@Dr.缝合假设只有三个表 - 我有多个表(至少 10 个),并且一遍又一遍地这样做会有问题。
-
@max_max_mir 这是一个糟糕的数据库设计,为什么不把它做成一张表呢?并将它们作为空值放在每一列中?