如何将表格数据转移到新表格?

时间:2016-12-21 02:24:41

标签: mysql phpmyadmin

我需要将2个表的数据传输到新表中,这是简化表。

表1

user_id_slot_1 | user_id_slot_2 | some_column | some_column_2

表2

user_id_slot_1 | user_id_slot_2 | some_column | some_column_2

注意:

  • 表1和表2中我需要传输/复制的数据几乎相同。

  • user_id_slot_1user_id_slot_2其中一个应该是 空/空。

  • 列的名称与实际数据库不同。

新表

id | user_id | some_column | some_column_2

如何从表1和表2中传输数据?

如何将列user_id_slot_1user_id_slot_2合并为一个并将其转移到user_id

更新

我不需要传输/复制表1和表2的ID,新表需要auto increment它。

2 个答案:

答案 0 :(得分:2)

这是你想要的吗?

create table3 as
    select id, coalesce(user_id_slot_1, user_id_slot_2) as user_id,
           some_column, some_column_2
    from table1
    union all
    select id, coalesce(user_id_slot_1, user_id_slot_2) as user_id,
           some_column, some_column_2
    from table2;

答案 1 :(得分:2)

假设新表已存在,您可以使用INSERT INTO ... SELECT来移动数据。我假设你不想删除两个源表之间的重复项,我在这里使用了UNION ALL

INSERT INTO new_table (`user_id`, `some_column`, `some_column_2`)
SELECT COALESCE(user_id_slot_1, user_id_slot_2),
       some_column,
       some_column2
FROM table1
UNION ALL
SELECT COALESCE(user_id_slot_1, user_id_slot_2),
       some_column,
       some_column2
FROM table2

注意:上述查询中的COALESCE(user_id_slot_1, user_id_slot_1)字词会选择user_id_slot_1,如果不是NULL,则会选择user_id_slot_2。假设每个记录中只有一个非NULL,这应该没问题。

假设new_table表的id列设置为自动递增,那么MySQL将处理为您分配这些值。您需要做的只是省略 idnew_table的值,MySQL将处理其余的事情。

您应该使用以下内容创建新表:

CREATE TABLE new_table (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    user_id INT NOT NULL,
    some_column VARCHAR(50) NOT NULL,
    some_column_2 VARCHAR(50) NOT NULL
)