我有以下表格,我需要加入它们:
表A
+----+----------+--------+
| ID | Period | Value |
+----+----------+--------+
| 1 |2009-02-01| 20.3 |
| 2 |2009-03-01| 22.5 |
| 3 |2009-04-01| 17.4 |
| 4 |2009-05-01| 16.5 |
| 5 |2009-06-01| 26.5 |
| 6 |2009-07-01| 35.4 |
+----+----------+--------+
表B
+----+----------+--------+
| ID | Period | Value |
+----+----------+--------+
| 1 |2009-04-01| 57.1 |
| 2 |2009-05-01| 56.5 |
| 3 |2009-06-01| 59.8 |
| 4 |2009-07-01| 55.4 |
+----+----------+--------+
表C
+----+----------+--------+
| ID | Period | Value |
+----+----------+--------+
| 1 |2009-03-01| 82.5 |
| 2 |2009-04-01| 87.4 |
| 3 |2009-05-01| 86.7 |
+----+----------+--------+
我的输出表已创建空表,如下所示:
表 D
+----+----------+--------+--------+--------+
| ID | Period | ValueA | ValueB | ValueC |
+----+----------+--------+--------+--------+
由于表 A 包含大部分记录,我想将其用作主表。期望的结果如下:
表 D
+----+----------+--------+--------+--------+
| ID | Period | ValueA | ValueB | ValueC |
+----+----------+--------+--------+--------+
| 1 |2009-02-01| 20.3 | NULL | NULL |
| 2 |2009-03-01| 22.5 | NULL | 82.5 |
| 3 |2009-04-01| 17.4 | 57.1 | 87.4 |
| 4 |2009-05-01| 16.5 | 56.5 | 86.7 |
| 5 |2009-06-01| 26.5 | 59.8 | NULL |
| 6 |2009-07-01| 35.4 | 55.4 | NULL |
+----+----------+--------+--------+--------+
我对 MySQL 很陌生。我在论坛中查看了类似的问题并尝试自己解决,但没有成功。
任何帮助表示赞赏。
回答
好的。一些事情。首先,问题不重复!这件事看起来更像是一个快速的主持人,而不是重复的问题。不,我在本网站的任何地方都没有找到这个答案,而且肯定不在版主答案的建议中。
现在是有趣的部分。 在创意版主的帮助下,花了几个小时终于成功了。正如我在原题中所说,表D已经存在。这是因为模型是由第三方应用程序创建和管理的。在这种情况下, Django .这是很重要的一点,否则操作将会有所不同。我的服务器上也有多个架构。 我认为在这种情况下,此查询的最佳方法是使用别名,如下所示:
insert into my_schema.table_d(period, valueA, valueB, valueC)
select A.Period, A.Value, B.Value, C.Value
from my_schema.table_a A
left join my_schema.table_b B
on A.Period = B.Period
left join my_schema.table_c C
on A.Period = C.Period
最佳答案
您正在寻找左连接
:
insert into d( . . . )
select . . .
from a left join
b
on a.period = b.period left join
c
on a.period = c.period;
填写 所在的列。 。 .
是。
关于Mysql - 将3个具有不同行数的表连接到另一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42747725/