iT邦幫忙

0

請教比對不同Table的SQL語法

sql
l5412369 1 年前1669 瀏覽

我要拿A資料庫的A'資料表當作source

去跨資料庫的A'資料表

找出其中的差異並update或是source有但A'沒有要INSERT

如果用Left join去撰寫語法 要怎麼下手

SELECT A.*
FROM [DBTEST].[xxxx].[dbo].[xxxx]AS A LEFT JOIN [xxx].[dbo].[xxx] AS B ON A.ABC=B.ABC
WHERE A.Id=B.Id

這是找出兩邊一樣的

剩下的要怎麼拼出邏輯????

2 個回答

1
wybeen
iT邦新手 5 級 ‧ 1 年前
最佳解答

MS SQL 的話還可以考慮使用 Merge

https://technet.microsoft.com/zh-tw/library/bb522522(v=sql.105).aspx

MERGE A
USING B
ON (A.ID = B.ID) 
WHEN NOT MATCHED BY TARGET 
    THEN INSERT(ID, ABC) VALUES(B.ID, B.ABC)
WHEN MATCHED AND A.ABC <> B.ABC
    THEN UPDATE SET A.ABC = B.ABC;
2
做工仔人!
iT邦高手 1 級 ‧ 1 年前

以MS-SQL 為例

設 TABLE 只有3個欄位. A1,A2,A3 , A1 為 唯一鍵值 .

缺資料 :

insert A (A1,A2,A3)
select A.A1,A.A2,A.A3
from DB1..A as A left join A as B on A.A1=B.A1
where B.A1 is null

不同的 :

UPDATE A SET A2=A.A2 , A3=A.A3
FROM DB1..A as A left join A as B on A.A1=B.A1
where (B.A2 <> A.A2) OR (B.A3 <> A.A3)

我要發表回答

立即登入回答