【问题标题】:MySQL: Merging two tables togetherMySQL:将两个表合并在一起
【发布时间】:2015-05-22 01:50:39
【问题描述】:

只是想知道,如果我有两个表有一些共同的列(虽然可能是不同的顺序)和一些不同的列,有没有一种简单的方法可以将这两个结构合并在一起,以便它们都有相同的列?

我尝试导出两者的结构并将文件合并在一起,目的是创建一个创建合并表的查询,但由于公共列的顺序不同,我最终尝试将同一列添加两次。

或者如果有这样的查询:

ALTER TABLE `example` ADD IGNORE...

【问题讨论】:

  • 你想对不常见的字段做什么?
  • 您是想将它们永久加入到 1 个表中,还是加入它们以进行查询? (所以当你完成后,每个表都保持不同)
  • @pala_ 添加它们,更改结果表的结构以包含两个表的所有列。
  • @Doon 永久加入他们。

标签: mysql merge


【解决方案1】:

我想你想要一个union all 查询:

select col1, col2, col3, NULL as col4, col5
from table1
union all
select col1, col2, col3, col4, NULL as col5
form table2;

【讨论】:

  • 不能用,表格的列数不同
  • @NaguibIhab 。 . .当然你可以使用union all。您只需包含表之间共有的列。
  • 我理解这个概念,但它对我不起作用我仍在试图找出我做错了什么。但是(在下一条评论中)这是一个正确的查询吗?
  • SELECT * FROM proj_sjcs.cms_clients UNION ALL SELECT *,NULL,NULL,NULL,NULL,NULL FROM proj_sjcs_orig.cms_clients
  • 不工作时会出现什么错误?您必须确保两个表中的列对齐,并且顺序相同。为不匹配的字段插入null
【解决方案2】:

您应该查看“JOIN”,因此如果your_table 有更多记录,并且您需要来自your_second_table 的一些额外列,并且表通过一些common_field 列连接,您可以:

SELECT t.*, t2.*
FROM your_table t
LEFT JOIN your_second_table t2
ON t.common_field = t2.common_field
  AND t.another_common_field = t2.another_common_field

【讨论】:

    【解决方案3】:

    最终对我有用的是导出两个表的结构并将它们的添加列查询放在一个 excel 列中并删除重复项,并使用留下的唯一查询创建一个新查询,这些查询是两个表中的唯一列。

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      相关资源
      最近更新 更多