我想编写一个将两个Access 2000数据库合并为一个的查询。每个表有35个相同字段的表和主要是唯一数据。有些行具有相同的“主键”,在这种情况下,数据库A中的行应始终优先于数据库B.我在“主键”周围使用引号,因为生成的数据库没有任何键或关系。例如:
数据库A,table1
col1 col2
Frank red
Debbie blue
数据库B,table1
col1 col2
Harry orange
Debbie pink
我想要的结果:
col1 col2
Frank red
Harry orange
Debbie blue
这些数据库是由非sql-savvy用户生成和下载的,所以我想给他们一个复制和粘贴的查询。他们显然必须先将一个DB [in]导入或链接到另一个DB。
我猜我必须使用组合结果查询创建第三个表,然后删除其他两个。但理想情况下,它只会将数据库A的行添加到数据库B中(在必要时覆盖)。
我当然不是在寻找一个完整的答案,只是希望能从哪里开始。我有一些mySQL经验,并了解连接的基础知识。是否可以在一个查询中完成所有操作,或者我是否必须为每个表分别设置一个?
谢谢!
答案 0 :(得分:1)
怎么样:
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
答案 1 :(得分:0)
这不是一个SQL解决方案,但可能会告诉非精通SQL用户剪切和粘贴SQL语句。
对于所有重复项都将失败,但插入任何“新”记录。 完成后,在必要时删除唯一键约束。
从您的问题看来,您需要在数据库B中生成结果表。因此,您可能希望让您的用户在开始之前或完成之后将表复制到数据库B中。