Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Access-合并具有相同结构的两个数据库_Sql_Ms Access - Fatal编程技术网

Sql Access-合并具有相同结构的两个数据库

Sql Access-合并具有相同结构的两个数据库,sql,ms-access,Sql,Ms Access,我想编写一个将两个Access 2000数据库合并为一个数据库的查询。每个表都有35个表,其中包含相同的字段和大部分唯一的数据。有些行将具有相同的“主键”,在这种情况下,数据库A中的行应始终优先于数据库B。我在“主键”周围使用引号,因为生成的数据库没有任何键或关系。例如: 数据库A,表1 col1 col2 Frank red Debbie blue 数据库B,表1 col1 col2 Harry orange Debbie pink 我想要的结果是: col1

我想编写一个将两个Access 2000数据库合并为一个数据库的查询。每个表都有35个表,其中包含相同的字段和大部分唯一的数据。有些行将具有相同的“主键”,在这种情况下,数据库A中的行应始终优先于数据库B。我在“主键”周围使用引号,因为生成的数据库没有任何键或关系。例如:

数据库A,表1

col1    col2
Frank   red
Debbie  blue
数据库B,表1

col1    col2
Harry   orange
Debbie  pink
我想要的结果是:

col1    col2
Frank   red
Harry   orange
Debbie  blue
这些数据库是由不懂sql的用户生成和下载的,所以我只想给他们一个复制和粘贴的查询。他们显然必须从导入或链接一个DB[in]到另一个DB[in]开始

我猜我必须用组合结果查询生成第三个表,然后删除另外两个表。不过,理想情况下,它只需将数据库A的行添加到数据库B中(必要时重写)

当然,我并不是在寻找一个完整的答案,只是希望能从哪里开始得到一些建议。我有一些mySQL的经验,了解连接的基本知识。是否可以在一个查询中完成这一切,或者每个表都必须有一个单独的查询


谢谢

这不是一个SQL解决方案,但也可以告诉不懂SQL的用户剪切和粘贴SQL语句

  • 我建议在表上定义一个具有优先权的唯一键(col1)
  • 然后将数据库B中的所有数据复制到“主”表中
  • 对于所有重复项,此操作将失败,但插入任何“新”记录。 如有必要,请在完成后删除唯一关键点约束

    从您的问题来看,您似乎需要数据库B中的结果表。因此,您可能希望用户在开始之前或完成之后将该表复制到数据库B中。

    如何:

    SELECT t.ID, t.Field1, t.Field2 INTO NewTable FROM
    (SELECT a.ID, a.Field1, a.Field2
    FROM Table1 A
    UNION
    SELECT x.ID, x.Field1, x.Field2
    FROM Table1 x IN 'C:\docs\db2.mdb'
    WHERE x.ID NOT IN (SELECT ID From Table1)) t
    

    为什么要从标题中删除
    SQL
    ?我正在寻找一个SQL查询作为答案。此SQL假设两个数据库中具有相同ID的记录实际上是相同的记录。如果数据库的两个副本出现分歧,可能会有不相同记录的重叠ID,因为它们是在两个副本分叉后创建的。用户似乎意识到了这一点,并提到需要Debbie Blue,而不是分歧的Debbie Pink记录。我只是在评论中指出一些隐含的假设,因为其他人可能有一天会遇到这个问题,而他们的特殊情况却没有这样的背景。