不使用临时表更新列数据
Update column data without using temporary tables
有一个叫做EMP
的table,还有一个叫做Gender
的列,定义为VARCHAR(1)
,所以'M'代表男性,'F' 为女性。一位开发人员不小心将 'M' 更改为 'F',将 'F' 更改为 'M'。
如何在不使用温度的情况下更正此问题table?
使用这 3 个更新语句:
update EMP set gender='X' where gender='M';
update EMP set gender='M' where gender='F';
update EMP set gender='F' where gender='X';
您可以使用 case
表达式:
UPDATE emp
SET gender = CASE gender WHEN 'M' THEN 'F' ELSE 'M' END
编辑:
为简单起见,上述声明假设 'M'
和 'F'
是唯一的两个选项——没有 null
s,没有未知数,没有任何东西。一个更健壮的查询可以消除这个假设,只是严格替换 M
s 和 F
s,而其他可能的值保持不变:
UPDATE emp
SET gender = CASE gender WHEN 'M' THEN 'F'
WHEN 'F' THEN 'M'
ELSE gender
END
有一个叫做EMP
的table,还有一个叫做Gender
的列,定义为VARCHAR(1)
,所以'M'代表男性,'F' 为女性。一位开发人员不小心将 'M' 更改为 'F',将 'F' 更改为 'M'。
如何在不使用温度的情况下更正此问题table?
使用这 3 个更新语句:
update EMP set gender='X' where gender='M';
update EMP set gender='M' where gender='F';
update EMP set gender='F' where gender='X';
您可以使用 case
表达式:
UPDATE emp
SET gender = CASE gender WHEN 'M' THEN 'F' ELSE 'M' END
编辑:
为简单起见,上述声明假设 'M'
和 'F'
是唯一的两个选项——没有 null
s,没有未知数,没有任何东西。一个更健壮的查询可以消除这个假设,只是严格替换 M
s 和 F
s,而其他可能的值保持不变:
UPDATE emp
SET gender = CASE gender WHEN 'M' THEN 'F'
WHEN 'F' THEN 'M'
ELSE gender
END