主键值调换--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`;
图例