【发布时间】:2021-07-02 18:11:07
【问题描述】:
我有 3 个如下表。其中 id, fcd, ref 列在表中是通用的,我正在尝试将所有表列合并到单个表中。
MariaDB [test]> select * from t1;
+----+-----+-----+------+------+
| id | fcd | ref | c1 | c2 |
+----+-----+-----+------+------+
| 1 | 1 | 1.0 | 0.10 | 2.00 |
| 1 | 2 | 1.5 | 0.40 | 2.22 |
| 3 | 1 | 2.0 | 0.10 | 4.30 |
| 3 | 2 | 3.2 | 0.01 | 6.60 |
| 5 | 3 | 7.5 | 0.00 | 7.70 |
+----+-----+-----+------+------+
5 rows in set (0.001 sec)
MariaDB [test]> select * from t2;
+----+-----+------+------+------+
| id | fcd | ref | c3 | c4 |
+----+-----+------+------+------+
| 1 | 1 | 1.00 | 0.06 | 0.76 |
| 1 | 2 | 1.20 | 0.32 | 0.87 |
| 5 | 2 | 6.50 | 0.44 | 0.09 |
| 5 | 3 | 6.68 | 0.47 | 0.08 |
+----+-----+------+------+------+
4 rows in set (0.001 sec)
MariaDB [test]> select * from t3;
+----+-----+-----+------+------+
| id | fcd | ref | c5 | c6 |
+----+-----+-----+------+------+
| 1 | 3 | 1.1 | 0.02 | 0.12 |
| 1 | 4 | 2.0 | 0.23 | 0.11 |
| 7 | 1 | 3.2 | 0.45 | 0.43 |
| 7 | 2 | 7.5 | 0.54 | 0.67 |
+----+-----+-----+------+------+
4 rows in set (0.000 sec)
这是我尝试使用联合没有运气
MariaDB [test]> select id,fcd,ref,c1,c2,null c3, null c4, null c5, null c6 from t1 union all select id,fcd,ref,null c1, null c2, c3, c4,null c5, null c6 from t2 union all select id,fcd,ref,null c1, null c2, null c3, null c4,c5, c6 from t3 order by id, fcd, ref;
+----+-----+------+------+------+------+------+------+------+
| id | fcd | ref | c1 | c2 | c3 | c4 | c5 | c6 |
+----+-----+------+------+------+------+------+------+------+
| 1 | 1 | 1.00 | NULL | NULL | 0.06 | 0.76 | NULL | NULL |
| 1 | 1 | 1.00 | 0.10 | 2.00 | NULL | NULL | NULL | NULL |
| 1 | 2 | 1.20 | NULL | NULL | 0.32 | 0.87 | NULL | NULL |
| 1 | 2 | 1.50 | 0.40 | 2.22 | NULL | NULL | NULL | NULL |
| 1 | 3 | 1.10 | NULL | NULL | NULL | NULL | 0.02 | 0.12 |
| 1 | 4 | 2.00 | NULL | NULL | NULL | NULL | 0.23 | 0.11 |
| 3 | 1 | 2.00 | 0.10 | 4.30 | NULL | NULL | NULL | NULL |
| 3 | 2 | 3.20 | 0.01 | 6.60 | NULL | NULL | NULL | NULL |
| 5 | 2 | 6.50 | NULL | NULL | 0.44 | 0.09 | NULL | NULL |
| 5 | 3 | 6.68 | NULL | NULL | 0.47 | 0.08 | NULL | NULL |
| 5 | 3 | 7.50 | 0.00 | 7.70 | NULL | NULL | NULL | NULL |
| 7 | 1 | 3.20 | NULL | NULL | NULL | NULL | 0.45 | 0.43 |
| 7 | 2 | 7.50 | NULL | NULL | NULL | NULL | 0.54 | 0.67 |
+----+-----+------+------+------+------+------+------+------+
13 rows in set (0.001 sec)
如您所见1 | 1 | 1 存在重复,以上一个没有正确组合
这是我所期望的
| id | fcd | ref | c1 | c2 | c3 | c4 | c5 | c6 |
|---- |----- |------ |------ |------ |------ |------ |------ |------ |
| 1 | 1 | 1 | 0.1 | 2 | 0.06 | 0.76 | NULL | NULL |
| 1 | 2 | 1.2 | NULL | NULL | 0.32 | 0.87 | NULL | NULL |
| 1 | 2 | 1.5 | 0.4 | 2.22 | NULL | NULL | NULL | NULL |
| 1 | 3 | 1.1 | NULL | NULL | NULL | NULL | 0.02 | 0.12 |
| 1 | 4 | 2 | NULL | NULL | NULL | NULL | 0.23 | 0.11 |
| 3 | 1 | 2 | 0.1 | 4.3 | NULL | NULL | NULL | NULL |
| 3 | 2 | 3.2 | 0.01 | 6.6 | NULL | NULL | NULL | NULL |
| 5 | 2 | 6.5 | NULL | NULL | 0.44 | 0.09 | NULL | NULL |
| 5 | 3 | 6.68 | NULL | NULL | 0.47 | 0.08 | NULL | NULL |
| 5 | 3 | 7.5 | 0 | 7.7 | NULL | NULL | NULL | NULL |
| 7 | 1 | 3.2 | NULL | NULL | NULL | NULL | 0.45 | 0.43 |
| 7 | 2 | 7.5 | NULL | NULL | NULL | NULL | 0.54 | 0.67 |
请高人帮帮我,不知道怎么解决
【问题讨论】: