主键值调换sql

主键值调换--sql

传统方法

-- 1. 将 a 转换为中间值 d
UPDATE `sometable`
SET p_key ='d'
WHERE p_key ='a';

-- 2.将 b 调换为 a
UPDATE `sometable`
SET p_key ='a'
WHERE p_key='b';

-- 3.将 d 调换为 b
UPDATE `sometable`
SET p_key='b'
WHERE p_key='d';

CASE 表达式

-- 使用 CASE 表达式完成主键值调换
-- 方法一
UPDATE `sometable`
set p_key= CASE WHEN p_key = 'a'
                THEN 'b'
                WHEN p_key ='b'
                THEN 'a'
                ELSE p_key END
	WHERE p_key IN ('a','b');
	
SELECT * FROM `sometable`;


--  方法二
UPDATE `sometable`
SET p_key = CASE  p_key
	WHEN 'a' THEN 'b'
	when 'b' THEN 'a'
	 END
	WHERE p_key IN ('a','b');
	
SELECT * FROM `sometable`;

图例

原文地址:https://www.cnblogs.com/d534/p/15615516.html