gpt4 book ai didi

mysql - 如何将表的数据转移到新表?

转载 作者:可可西里 更新时间:2023-11-01 08:03:34 26 4
gpt4 key购买 nike

我需要将2个表的数据转移到新表中,这里是简化表。

表一

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,新表需要自动递增它。

最佳答案

假设新表已经存在,您可以使用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 将为您分配这些值。您需要做的就是省略new_tableid 的值,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
)

关于mysql - 如何将表的数据转移到新表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41254147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com