【发布时间】:2017-05-29 17:54:59
【问题描述】:
我有不同列和不同行数的表格
+----+----------+--------+------+-------+---------+-------+--------+--------+------+
| ID | Name | SpT | Teff | RAdeg | DEdeg | Dist | n_Dist | pm | Ref |
+----+----------+--------+------+-------+---------+-------+--------+--------+------+
| 1 | 0000-345 | DCP8.1 | 6643 | 0.667 | -34.222 | 13.21 | p | 0.7578 | L20 |
| 2 | 0008+424 | DA6.8 | 7380 | 2.843 | 42.678 | 22.00 | sp | 0.2328 | L20 |
| 3 | 0009+501 | DAH7.6 | 6502 | 3.061 | 50.422 | 11.03 | p | 0.7150 | L20 |
| 4 | 0011-134 | DAH8.4 | 5992 | 3.553 | -13.183 | 19.49 | p | 0.8990 | L20 |
| 5 | 0011-721 | DA7.8 | 6325 | 3.457 | -71.831 | NULL | sp | 0.3260 | GBD |
+----+----------+--------+------+-------+---------+-------+--------+--------+------+
和:
+----+----------+--------+-------+-------+-------+------+
| ID | Name | SpT | Uvel | Vvel | Wvel | Vtot |
+----+----------+--------+-------+-------+-------+------+
| 1 | 0000-345 | DCP9 | -11.9 | -43.7 | 3.2 | 45.4 |
| 2 | 0008+424 | DA6.8 | -10.0 | -1.9 | -17.4 | 20.2 |
| 3 | 0009+501 | DAH7.7 | -28.1 | 8.6 | -24.1 | 38.0 |
| 4 | 0011-134 | DCH8.4 | -75.5 | -31.1 | -9.8 | 82.3 |
| 5 | 0011-721 | DA8.0 | 10.3 | -23.2 | 12.2 | 28.2 |
+----+----------+--------+-------+-------+-------+------+
我想合并表以获得类似的结果,两个表的行并用 NULL 填充空列。
+------------+-----+------------+---------+---------+-------+--------+--------+-------+--------+--------+--------+-------+---------+
| Name | ID | SpT | RAdeg | DEdeg | Dist | n_Dist | pm | Teff | Uvel | Vvel | Wvel | Vtot | Ref |
+------------+-----+------------+---------+---------+-------+--------+--------+-------+--------+--------+--------+-------+---------+
| 0000-345 | 1 | DCP8.1 | 0.667 | -34.222 | 13.21 | p | 0.7578 | 6643 | -11.9 | -43.7 | 3.2 | 45.4 | L20 |
| 0008+424 | 2 | DA6.8 | 2.843 | 42.678 | 22.00 | sp | 0.2328 | 7380 | -10.0 | -1.9 | -17.4 | 20.2 | L20 |
| 0009+501 | 3 | DAH7.6 | 3.061 | 50.422 | 11.03 | p | 0.7150 | 6502 | -28.1 | 8.6 | -24.1 | 38.0 | L20 |
| 0011-134 | 4 | DAH8.4 | 3.553 | -13.183 | 19.49 | p | 0.8990 | 5992 | -75.5 | -31.1 | -9.8 | 82.3 | L20 |
| 0011-721 | 5 | DA7.8 | 3.457 | -71.831 | NULL | sp | 0.3260 | 6325 | 10.3 | -23.2 | 12.2 | 28.2 | GBD |
| 0029-031 | 6 | DA11.3 | 8.041 | -2.900 | 23.47 | p | 0.6505 | 4470 | 68.3 | -23.0 | 2.6 | 72.1 | Pi |
我尝试了 FULL JOIN:
SELECT * FROM t1 FULL OUTER JOIN t2 ON t1.Name = t2.Name;
但它会返回:
ERROR 1064 (42000): You have an error in your SQL syntax
我怎样才能做到这一点? 谢谢
【问题讨论】:
-
MySQL 没有完全外连接
-
您必须将
full join替换为union的left join和right join结果。 -
尽管有人问过这个问题,但指向的副本没有正确的答案(不幸的是,如此赞成的答案不正确)。我已经添加了正确的答案。