SQL Server If语句更新表值

时间:2011-11-30 19:01:08

标签: sql-server if-statement sql-update

我正在尝试在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}}

由于

2 个答案:

答案 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”...替换你想要的值,那里。)