一次更新多个字段

时间:2012-05-16 12:27:27

标签: sql

我试图在整个表格中找到单词true的所有实例,并将它们更改为“1”。为了节省将来的时间,我希望能够一次更改每一列,只运行一个查询。

update myTable set field1, field2, field3=1 where field1, field2, field3='true'

这就是我正在做的事情。

3 个答案:

答案 0 :(得分:5)

update mytable
set
field1 = case when field1='true' then 1 else field1 end,
field2 = case when field2='true' then 1 else field2 end,
field3 = case when field3='true' then 1 else field3 end
where 
    field1 ='true' or field2='true' or field3='true'

答案 1 :(得分:2)

您当前的语法已关闭。您需要为每个字段指定值:

UPDATE MyTable
SET
   Field1 = CASE WHEN Field1 = 'True' THEN 1 ELSE Field1 END,
   Field2 = CASE WHEN Field2 = 'True' THEN 1 ELSE Field2 END,
   Field3 = CASE WHEN Field3 = 'True' THEN 1 ELSE Field3 END

这将检查每一行并根据需要更新这些字段。

答案 2 :(得分:1)

不,在你写这篇文章时,没有一种简单的方法可以做到这一点。

您可以使用以下方式动态循环遍历列

select name from sys.columns
  where object_id=(
  select object_id from sys.objects where name like 'myTable '
)

并逐一检查。

它需要一些编码并且执行时间不是最好的,但它会避免你编写大量代码,而主要的优点是,你可以通过更改名称来更改表。