Sql server 用于更新表值的SQL Server If语句
我正在尝试在SQL Server中编写一个例程,该例程在运行时将遍历指定的表,如果特定列包含一个值,则更新另一个值。在伪代码中: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
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”一词之外……在此处替换所需的值。)