我有一个看起来像这样的表:

时间:2014-07-25 02:25:51

标签: sql database sql-server-2008 mysqli

tblCust

Gender

Male
Female
Male
Male
Female

并且想要更新这样的代替男性想要设置女性而代替女性想要设置男性。但如果我更新说女性对男性。

update tblCust set
Gender = 'Male'
where Gender = 'Female'

所有行现在都是男性,因此我忘记了最初是女性和最初是男性的数据。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

不能分两步完成,因为更新一种类型会影响另一种类型。

您需要使用case语句在一个查询中更新这两种类型:

update tblCust set
gender = case gender when 'Female' then 'Male' else 'Female' end

如果你有其他性别,你需要稍微改进一下:

update tblCust set
gender = case gender 
    when 'Female' then 'Male'
    when 'Male' then 'Female'
    else gender end -- leave unchanged if neither Male nor Female

答案 1 :(得分:0)

这可能就是这样......它很容易交换

Update tblCust Set Gender='M' WHERE Gender='Male';
Update tblCust Set Gender='Male' WHERE Gender='Female';
Update tblCust Set Gender='Female' WHERE Gender='M';