このシナリオを数回実行しましたが、テスト中に同じデータベースで常時発生することはありません。私は2つの別々のデータベースを持っています。私は1つのdbにマージしています。あるデータベースから別のデータベースにレコードを挿入すると、ターゲットデータベースに重複した値が重複して表示されていますが、1つのソースにはターゲットが1つしか存在しません。SQL Server:重複しない値を複製する文を挿入します
例:
DB1..Customer
Cust_ID | Last_Name | First_Name | Phone | Email | Field1
1 | Smith | John | 111-1111 | [email protected] |
DB2..Customer
Cust_ID | Last_Name | First_Name | Phone | Email | Field1
1 | Jones | Steve | 222-2222 | [email protected] |
2 | Smith | Tom | 333-3333 | [email protected] |
私は私のクエリを実行します。
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..Customerは
Cust_ID | Last_Name | First_Name | Phone | Email | Field1
1 | Smith | John | 111-1111 | [email protected] |
2 | Jones | Steve | 222-2222 | [email protected] | 1
3 | Jones | Steve | 222-2222 | [email protected] | 1
4 | Jones | Steve | 222-2222 | [email protected] | 1
5 | Jones | Steve | 222-2222 | [email protected] | 1
6 | Smith | Tom | 333-3333 | [email protected] | 2
7 | Smith | Tom | 333-3333 | [email protected] | 2
8 | Smith | Tom | 333-3333 | [email protected] | 2
私はdb2..customer.cust_idの複数のカウントを持つfield1
列の数を実行したときに重複した値が入力された気づきます。 Cust_ID
はPKの値なので、クエリごとに1つの値フローをfield1カラムに入れるだけです。
これがなぜ発生するのかに関するご意見やご提案はありますか?私の最後のクエリは、最大4回のアイテムを複製しました。それは私にはSQLが患者のためにループを掘り起こしている間に捕捉されていると同時に、同時にそれらをターゲットのDBに書き込んでいるようです。
SQL Serverはループに巻き込まれません。 – SQLMason