m0_46549277
m0_46549277
采纳率100%
2020-12-25 16:25

MYSQL数据库两表合并

已采纳

在同一个数据库下两张表合并,从把a表的字段插入到b表,

使用插入语句:

insert into 表1 (列名1,列名2,列名3)  select  列1,列2,列3 from 表2

后唯一字段相同,导致后续数据无法插入

 

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • qq_25376897 qq_25376897 4月前

    insert into tb_user(phone,pwd) select phone,pwd from tb_amdin ON DUPLICATE KEY UPDATE pwd =  VALUES(pwd);

    这种是当有唯一索引冲突的时候(phone相同),就执行更新操作,将tb_amdin里面的pwd更新到tb_user对应的pwd;否则执行插入操作

    点赞 1 评论 复制链接分享
  • m0_46549277 m0_46549277 4月前

    ON DUPLICATE KEY UPDATE这个应该加在哪个位置上

    点赞 评论 复制链接分享
  • m0_46549277 m0_46549277 4月前

    我有尝试使用 where 主键 != 主键,可以执行就是语句插入不进去

    点赞 评论 复制链接分享
  • weixin_48603744 守望_X 4月前

    主键一样肯定会报错啊,如果只是保留一条就行,那么就left join一下,把表2和表1重复的剔除就行了;

    insert into 表1 (列名1,列名2,列名3)  select  列1,列2,列3 from 表2 a left join 表1 on a.id=b.aid where b.aid is null

    如果两条都必须保留,就新建个表,把主键约束去掉,插过去,然后把现有的表rename,然后把新建的表rename过来就行了;

     

    如果主键只是个递增主键,没有实际意义,且两条必须,那么把重复的主键字段拼接个其它值或字符区别开再插过去就行了

     

      

    点赞 评论 复制链接分享
  • qq_25376897 qq_25376897 4月前

    可以用上ON DUPLICATE KEY UPDATE,关键是冲突之后你想怎么处理

    点赞 评论 复制链接分享

相关推荐