2011-11-30 104 views
0

我想在SQL Server中編寫一個例程,運行時將遍歷指定的表,如果特定的列包含值,則更新另一個值。在僞代碼:SQL Server如果語句更新表值

select * from table1 
if column1 = true 
{ 
    update table2.column1 with value where table2.column2.value = table1.column2.value 
} 

基本上,遍歷table1如果在一個特定的列值是true,更新另一個表的column1的值,其中該行的column2比賽table1column2

感謝

回答

3

您不需要IF,只需使用WHERE子句:

UPDATE T2 
SET t2.Column1 = 'blah' 
FROM Table2 t2 
INNER JOIN Table1 t1 
    ON t1.value = t2.value 
WHERE t1.column1 = 'True' 
0

不知道我完全理解你的要求,但如果你想使用一個更新語句更新所有的值,這可能做到:

update table2 set column1 = 
     (select column1 from table1 t1 
     where t1.column2 = table2.column2 
     ) 
    where exists 
     (select * from table1 t1 
     where t1.column2 = table2.column2 and t1.column1 = true 
     ) 

它可以寫,以避免第二子查詢(EXISTS的條款)但解決方案是相當具體的方言。我相信這個人更有可能以一種不知名的方言接受。 (除了單詞「真」...代替你想要的值,那裏。)