【发布时间】:2017-02-03 14:05:43
【问题描述】:
我曾多次遇到这种情况,但在测试时并非总是在同一个数据库上发生这种情况。我有两个独立的数据库,我正在合并到一个数据库中,两者的结构完全相同。将记录从一个数据库插入另一个数据库时,我看到目标数据库上存在重复的不同值,但在一个源中仅存在一次,而在目标中不存在。
例子:
DB1..客户
Cust_ID | Last_Name | First_Name | Phone | Email | Field1
1 | Smith | John | 111-1111 | m@M.com |
DB2..客户
Cust_ID | Last_Name | First_Name | Phone | Email | Field1
1 | Jones | Steve | 222-2222 | S@S.com |
2 | Smith | Tom | 333-3333 | S@m.com |
当我运行查询时:
INSERT INTO DB1..Customer (Last_Name, First_Name, Phone, Email, Field1)
SELECT
Last_name, First_Name, Phone, Email, Cust_ID
FROM
DB2..Customer DB2
WHERE
DB2.Cust_ID NOT IN (SELECT DB2.Cust_ID
FROM DB2..Customer DB2
INNER JOIN DB1..Customer DB1 ON DB1.Last_Name = DB2.Last_Name
AND DB1.First_Name = DB2.First_Name
AND DB1.Email = DB2.Email)
结果:
DB1..客户
Cust_ID | Last_Name | First_Name | Phone | Email | Field1
1 | Smith | John | 111-1111 | m@M.com |
2 | Jones | Steve | 222-2222 | S@S.com | 1
3 | Jones | Steve | 222-2222 | S@S.com | 1
4 | Jones | Steve | 222-2222 | S@S.com | 1
5 | Jones | Steve | 222-2222 | S@S.com | 1
6 | Smith | Tom | 333-3333 | S@m.com | 2
7 | Smith | Tom | 333-3333 | S@m.com | 2
8 | Smith | Tom | 333-3333 | S@m.com | 2
当我对具有多个 db2..customer.cust_id 计数的 field1 列进行计数时,我注意到输入了重复的值。因为Cust_ID 是PK 值,所以我的每个查询应该只有一个值流入field1 列。
关于为什么会发生这种情况的任何想法或建议?我上次运行的查询重复了一些项目多达 4 次。在我看来,SQL 在搜索患者的同时也将它们写入目标数据库时陷入了一个循环。
【问题讨论】:
-
SQL Server 未陷入循环。
标签: sql-server database