我有一张桌子
EmpId EmpName ManagerId Gender
1 Shahzad 2 M
2 Santosh 1 F
3 Sayanhi 2 M
错误地' M'被分配给女性员工和' F'分配给男性员工。所以我需要编写一个查询来进行修正。
我尝试了以下查询。
UPDATE Employee
SET Gender='M'
WHERE EmpId IN (SELECT EmpId FROM Employee WHERE Gender='F')
AND Gender='F'
WHERE EmpId IN (SELECT EmpId FROM Employee WHERE Gender='M')
但它没有用。
答案 0 :(得分:9)
这是一个简单的解决方案,可以同时修复这两种情况:
UPDATE Employee
SET Gender = CASE Gender
WHEN 'M' THEN 'F'
WHEN 'F' THEN 'M'
END
答案 1 :(得分:2)
请改为尝试:
SELECT empid, empname, CASE WHEN gender = 'M' THEN 'F' ELSE 'M' END AS Gender
INTO #tmp
FROM Employee
如果您对在那里看到的内容感到满意,那么:
UPDATE Employee
SET Employee.Gender = #tmp.Gender
FROM Employee
INNER JOIN #tmp
ON Employee.empid = #tmp.empid
答案 2 :(得分:1)
如果给出的是每个员工的性别都不正确,并且每个性别都已经是M或F,为什么不呢:
UPDATE Employee
SET Gender=(CASE WHEN Gender='F'
THEN 'M'
ELSE 'F' END)