我正在尝试在SQL Server中编写一个例程,该例程在运行时将遍历指定的表,如果特定列包含值,则更新另一个值。在伪代码中:
select * from table1
if column1 = true
{
update table2.column1 with value where table2.column2.value = table1.column2.value
}
基本上,遍历table1
并且如果特定列中的值为true,则更新另一个表的column1
的值,该行的column2
匹配table1
的{ {1}}
由于
答案 0 :(得分: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'
答案 1 :(得分: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子句),但解决方案是特定于方言的。我相信,这个更有可能被一种未知的方言所接受。 (除了单词“true”...替换你想要的值,那里。)