我在一列中有数据。前任:
狗 狗 猫 狐狸
如何同时将所有狗的值更改为狐狸和所有狐狸的值更改为狗?如果我运行一个 UPDATE SET 它将把所有的狗都变成狐狸,然后我运行第二个它会把所有东西都变成狗。
我在一列中有数据。前任:
狗 狗 猫 狐狸
如何同时将所有狗的值更改为狐狸和所有狐狸的值更改为狗?如果我运行一个 UPDATE SET 它将把所有的狗都变成狐狸,然后我运行第二个它会把所有东西都变成狗。
update
table
set
animal = case anmial when 'dog' then 'fox' else 'dog' end
where
animal in ('dog', 'fox')
如果您有的不仅仅是狗和狐狸,您可以考虑制作一个转换表来帮助您进行更新。这样你就不需要案例陈述了。
declare @original table
(
pk int identity(1,1),
column1 varchar(max)
)
insert into @original
select 'fox'
union all
select 'dog'
declare @conversion table
(
valueFrom varchar(max)
,valueTo varchar(max)
)
insert into @conversion
select 'fox','dog'
union all
select 'dog','fox'
select * from @original
update original
set original.column1 = c.valueTo
from @original as original inner join @conversion as c
on original.column1 = c.valueFrom
select * from @original
使用已经回答的 case 语句是“正确的方法”。但是,您可能有点创意。假设从未使用过'xxx'......
update table set animal = 'xxx' where animal = 'dog'
update table set animal = 'dog' where animal = 'cat'
update table set animal = 'cat' where animal = 'xxx'
给猫剥皮的方法不止一种。