通过ID合并来自同一数据库的表

时间:2020-05-04 15:53:18

标签: mysql sql database

我有一个包含3个表的数据库,这些表包含有关同一主题的不同信息:

表1:

ID  |  name  | address
-------------------------
1   |  Jhon  |  somewhere
2   |  James |  somewhere-else

表2:

ID  |  last_name  | status
-------------------------
1   |  Doe  |  single
2   |  Bond |  married

我想将它们合并到新表中,如下所示:

新合并表:

ID  |  name  |      address    | last_name | status
----------------------------------------------------
1   |  Jhon  |     somewhere   |     Doe   |  single
2   |  James |  somewhere-else |     Bond  |  married

2 个答案:

答案 0 :(得分:1)

使用基本联接:

SELECT
    t1.ID,
    t1.name,
    t1.address,
    t2.last_name,
    t2.status
FROM table1 t1
LEFT JOIN table2 t2
    ON t1.ID = t2.ID;

严格来说,如果一个给定的ID可以存在于一个表中,但不能同时存在于两个表中,那么您可能希望使用完整的外部联接,以尽可能地始终显示部分信息。如果是这种情况,则可以在此处给出评论和不同的查询。

答案 1 :(得分:0)

这应该有效:

ALTER TABLE `table1` ADD COLUMN `last_name` CHAR(32) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '';
ALTER TABLE `table1` ADD COLUMN `status` CHAR(16) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '';

UPDATE table1 AS a, table2 as b
SET a.last_name = b.last_name
a.status = b.status
WHERE a.ID = b.ID;

DROP `table2`;