如下:
name=new
ID A B C
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
name=old
ID A B C
1 1 1 1
2 2 2 2
3 3 3 3
執行
select ID,A,B,C from new
union
select ID,A,B,C from old
結果為:
ID A B C
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
但如果我在Old的資料有做修正後,再執行時卻會把所有資料都當做不一樣的顯示,如下:
name=new
ID A B C
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
name=old
ID A B C
1 1 1 1
2 3 2 2
3 3 3 3
執行
select ID,A,B,C from new
union
select ID,A,B,C from old
結果為:
ID A B C
1 1 1 1
2 2 2 2
2 3 2 2
3 3 3 3
4 4 4 4
5 5 5 5
ID 2 因內容不一樣..所以兩個都顯示了。
是不是有方法可以保留old的資料,new的資料如有相同的則不新增,不同的則新增。
EX:以ID為判斷,如old ID有相同的不新增,如有old ID沒有的號碼,則新增並連同 A B C都一併新增。
以上問題有點攏長,感謝各位高手耐心看完並給予指教
CREATE TABLE new (
ID INT NULL ,
A INT NULL ,
B INT NULL,
C INT NULL);
INSERT INTO new (ID,A,B,C)
VALUES
(1,1,1,1),
(2,2,2,2),
(3,3,3,3),
(4,4,4,4),
(5,5,5,5);
CREATE TABLE old (
ID INT NULL ,
A INT NULL ,
B INT NULL,
C INT NULL);
INSERT INTO old (ID,A,B,C)
VALUES
(1,1,1,1),
(2,3,2,2),
(3,3,3,3);
SELECT ID,A,B,C
FROM old
UNION
SELECT ID,A,B,C
FROM new
WHERE new.ID NOT IN (SELECT old.ID
FROM old)