热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql如何将表的数据传输到新表?

我需要将2个表的数据转移到新表中,这里是简化表.表格1user_id_slot_1|user_id_slot_2|some_column|so

我需要将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_1和user_id_slot_2其中之一应为
空/空.
>列名与实际数据库不同.

新表

id | user_id | some_column | some_column_2

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

如何将列user_id_slot_1和user_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)项如果不为NULL,则将选择user_id_slot_1,否则将选择user_id_slot_2.假设每个记录中只有一个为非NULL,这应该很好.

假设new_table表的id列设置为自动递增,则MySQL将为您分配这些值.您需要做的就是在new_table中省略id的值,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
)


推荐阅读
author-avatar
fuotb_204
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有