Sql server 用于更新表值的SQL Server If语句

Sql server 用于更新表值的SQL Server If语句,sql-server,if-statement,sql-update,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,如果特定列中的值为真,则更新另一个表的column1的值,其中该行的co

我正在尝试在SQL Server中编写一个例程,该例程在运行时将遍历指定的表,如果特定列包含一个值,则更新另一个值。在伪代码中:

 select * from table1
 if column1 = true
 {
     update table2.column1 with value where table2.column2.value = table1.column2.value
 }
基本上,遍历
table1
,如果特定列中的值为真,则更新另一个表的
column1
的值,其中该行的
column2
table1
column2
匹配


谢谢

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

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

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

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

我不确定我是否完全理解您的要求,但如果您希望使用单个update语句更新所有值,则可以这样做:

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

我不确定我是否完全理解你的要求,但是如果你想用一个update语句更新所有值,这可能会:

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”一词之外……在此处替换所需的值。)