【问题标题】:MySQL: Merge two tables (same schema) and create a new one - SINGLE QUERYMySQL:合并两个表(相同的模式)并创建一个新表 - SINGLE QUERY
【发布时间】:2012-03-12 03:46:36
【问题描述】:

我有两个具有完全相同架构的表。

我想要第三张表,包含这两个表的所有数据。

如何使用 INSERT INTO 查询(单个查询执行此操作)来执行此操作?

我知道我可以这样做:INSERT INTOname_of_new_tableSELECT DISTINCT * FROMname_of_old_table 但是我需要做两次。我正在寻求通过 SINGLE 查询来做到这一点。

谢谢。

【问题讨论】:

  • 请使用SHOW CREATE TABLE old_table_1 \G显示表架构

标签: mysql sql centos


【解决方案1】:
INSERT INTO new_table
SELECT * FROM old_table_1
UNION
SELECT * FROM old_table_2

删除了您的DISTINCT,因为UNION 有一个隐含的DISTINCTUNION ALL 没有这个)。但是,这仅在表的列数相同并且具有相似的列类型时才有效。话又说回来,听起来这就是你的情况。

【讨论】:

  • 如果 T1 中的 X 列是 varchar-128 而在 T2 中是 varchar-126,这是否意味着它不起作用?
  • @Phil 我不确定。我没有那个问题。文档说它们必须是相似的数据类型(不像我说的那样),所以它可能工作得很好。
  • 非常感谢。顺便问一下,如果可以,请问如何避免联合引起的Primary key issue的问题?由于两个表中的主键相似,我停止了查询。谢谢。
  • @Phil 是一个身份值,还是主键有某种意义(一个有意义的 ID,还是只是一个 IDENTITY(1,1)?)
  • ID 列是INT auto_inc。我通过键入所有列名找到了解决方案。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 2011-04-11
  • 1970-01-01
相关资源
最近更新 更多