我有一列中的數據。 例如:如何在SQL中同時交換兩個字段的值?
狗 狗 貓 狐狸
如何在同一時間改變所有的狗狐狸和所有狐狸犬的價值的價值?如果我運行一個UPDATE SET,它會將所有的狗變成狐狸,然後運行第二個狗它會把所有的狗變成狗。
我有一列中的數據。 例如:如何在SQL中同時交換兩個字段的值?
狗 狗 貓 狐狸
如何在同一時間改變所有的狗狐狸和所有狐狸犬的價值的價值?如果我運行一個UPDATE SET,它會將所有的狗變成狐狸,然後運行第二個狗它會把所有的狗變成狗。
update
table
set
animal = case anmial when 'dog' then 'fox' else 'dog' end
where
animal in ('dog', 'fox')
使用已經回答的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'
有一種以上的皮膚方法貓。
如果您不只是狗和狐狸,您可以考慮製作轉換表來幫助您進行更新。這樣你就不需要case語句。
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