首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何合并两个MySQL表?

如何合并两个MySQL表?
EN

Stack Overflow用户
提问于 2009-04-07 12:53:51
回答 6查看 201.3K关注 0票数 95

如何合并具有相同结构的两个MySQL表?

两个表的主键将会冲突,所以我已经考虑到了这一点。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-04-07 13:04:19

您还可以尝试:

INSERT IGNORE
  INTO table_1 
SELECT *
  FROM table_2
     ;

这允许table_1中的那些行取代table_2中具有匹配主键的那些行,同时仍然插入具有新主键的行。

或者,

REPLACE
   INTO table_1
 SELECT *
   FROM table_2
      ;

将用table_2中的相应行更新table_1中已有的那些行,同时插入具有新主键的行。

票数 126
EN

Stack Overflow用户

发布于 2009-04-07 13:02:21

这取决于主键的语义。如果只是自动递增,那么使用下面这样的代码:

insert into table1 (all columns except pk)
select all_columns_except_pk 
from table2;

如果PK有意义,您需要找到一种方法来确定哪条记录应该具有优先级。您可以创建一个select查询来首先查找重复项(请参见answer by cpitis)。然后删除您不想保留的记录,并使用上面的insert来添加剩余的记录。

票数 38
EN

Stack Overflow用户

发布于 2009-04-07 13:00:44

INSERT
INTO    first_table f
SELECT  *
FROM    second_table s
ON DUPLICATE KEY
UPDATE
        s.column1 = DO_WHAT_EVER_MUST_BE_DONE_ON_KEY_CLASH(f.column1)
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/725556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档