不使用临时表更新列数据

3

有一张名为EMP的表,其中有一个名为Gender的列,定义为VARCHAR(1),因此'M'表示男性,'F'表示女性。开发人员不小心将'M'更改为'F',将'F'更改为'M'。

如何在不使用临时表的情况下纠正这个问题?

2个回答

4
您可以使用“case”表达式:

您可以使用case表达式:

UPDATE emp
SET    gender = CASE gender WHEN 'M' THEN 'F' ELSE 'M' END

编辑:
为简单起见,上述声明假设'M''F'是仅有的两个选项——没有null,没有未知数,没有任何其他东西。更强大的查询可以消除这种假设,只严格替换MF,使其他可能的值保持不变:

UPDATE emp
SET    gender = CASE gender WHEN 'M' THEN 'F' 
                            WHEN 'F' THEN 'M'
                            ELSE gender
                END

2

请使用以下三个更新语句:

update EMP set gender='X' where gender='M';
update EMP set gender='M' where gender='F';
update EMP set gender='F' where gender='X';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接