的問題看起來是您要劃上等號,並否定在同一列(。無) - 這將永遠不會返回任何行。我相信你的意思是否定不同的專欄。
此外,您需要指定更新語句的每個字段。 下面是我認爲你正在尋找的一個例子:
CREATE TABLE [master] (a int, b int, c int)
CREATE TABLE [smaller] (a int, b int, c int)
INSERT INTO [master] (a, b, c)
VALUES (1, 0, 1), (2, 1, 2), (3, 1, 3), (4, 2, 4), (5, 3, 5), (6, 5, 6)
INSERT INTO [smaller] (a, b, c)
VALUES (3, 1, 3), (4, 0, 4), (5, 0, 5), (7, 8, 7), (8, 13, 8)
-- note values for 'b' on row 4, 5
SELECT * FROM [master]
UPDATE [master]
SET [master].b = [smaller].b,
[master].c = [smaller].c
FROM [smaller] INNER JOIN [master]
ON [master].a = [smaller].a
AND [smaller].b <> [master].b
-- note values for 'b' on row 4, 5
SELECT * FROM [master]
DROP TABLE [master]
DROP TABLE [smaller]
你試過'LEFT JOIN'嗎? – Kermit
不,我是較新的SQL查詢,但瞭解不同的聯接。你可以在代碼中顯示這個嗎? –