我有一个Users表,用于以nvarchar(6)格式保存用户性别的数据。我将软件更改为使用枚举来指示性别,因此希望将数据保存为int。
0 =男性,1 =女性。
我将每个用户名和旧的nvarchar性别放在一个单独的表中,并将原始Users表中的gender列转换为int列。如何设置我的查询以获取临时表中的所有用户并将其按用户名匹配到Users表中的用户,然后根据旧值是“女性”还是“男性”设置性别= 0或1 “?
用户
id int PK
用户名 nvarchar (50)
性别 int
不是Temptable
id int PK(Clusted Index与用户的PK无关)
用户名 nvarchar (50)
性别 nvarchar (6)
我希望将tempTable
中的username
用户与Users
表中Username
的用户进行匹配,并将Users.Gender
值更新为0或1在tempTable.gender
是男性还是女性。
答案 0 :(得分:0)
这样的事情应该有效:
update a set gender = case b.Gender
when 'Male' then 0
when 'Female' then 1
end
from users a inner join
tempTable b on b.Username = a.Username
这假设每个人都有一个老年人。价值是男性或女性,并不会导致数据不良/缺失。