2012-06-08 38 views
0

我兩條表: 表A ID字段1 ....如何循環瀏覽表格,找到值並插入(如果存在)?

表B ID字段2字段3 ...

我將通過表B中,如果想用LOOP同一ID AA紀錄退出表A,在表A中添加Field2和Field3的值。

我不知道如何在T-SQL中執行操作! 你能幫我嗎? 感謝

+1

「在T-SQL循環」 - 不要做m'ok!集合,集合,集合......你永遠不能擁有足夠的集合! –

+0

通過表(或其子集)中的記錄「循環」的相應概念是CURSOR。有各種類型的遊標,具體取決於你需要什麼鎖定等等。 – hardmath

+0

你是否想用表B中的Field2和Field3組成Field1字段?或者表A中還存在Field2和Field3? – Josien

回答

2

使用循環結構不需要此更新,您可以在解決這個問題整潔的方式使用設置操作。如果我理解正確的問題,你想從表B值UPDATE表A中使用這樣的查詢:

UPDATE TableA 
    SET TableA.Field2 = TableB.Field2, TableA.Field3 = TableB.Field3 
    FROM TableB 
    WHERE TableA.ID = TableB.ID 

你可能想要做額外的檢查在此查詢,看看有什麼價值在2場表A中有3個在更換之前。

(爲了測試這第一次查詢的結果會是什麼,構築起UPDATE查詢SELECT查詢以上!)

0
SELECT CASE 
    WHEN TableA.ID IS NULL THEN TableB.Field2 
    ELSE TableB.Field3 
END as FieldX 
FROM TableB LEFT OUTER JOIN TableA 
     ON TableA.ID = TableB.ID 
0

也許你可以這樣做只是這樣的:

select tab2.id, (tab2.field2 + tab2.field3) as sumfield 
from tab2 join tab1 on tab2.id = tab1.id 

OR

select tab2.id, (tab2.field2 + tab2.field3) as sumfield 
from tab2 
join 
(select distinct id from tab1) tab1 
on tab2.id = tab1.id