2012-11-30 24 views
0

我有兩個表。一個主人和一個小人。我只想將所有來自較小的行插入到在某個字段中不具有相同值的主數據庫中。我所嘗試過的不起作用。還有一種方法可以指定行中的所有值,而不是單獨列出它們?將一張表中的所有行插入另一張沒有類似值的行中?

喜歡的東西...

Update Master 
Set Master.[All Values] = Smaller.[All Values] 
Inner join Smaller on Master.No = Smaller.No 
where Master.No <> Smaller.No 
+0

你試過'LEFT JOIN'嗎? – Kermit

+0

不,我是較新的SQL查詢,但瞭解不同的聯接。你可以在代碼中顯示這個嗎? –

回答

1

的問題看起來是您要劃上等號,並否定在同一列(。無) - 這將永遠不會返回任何行。我相信你的意思是否定不同的專欄。

此外,您需要指定更新語句的每個字段。 下面是我認爲你正在尋找的一個例子:

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] 
相關問題