MySQL中如何互换列值?male与female互相替换的查询方法
MySQL 互换 gender 列中 male 和 female 值的正确方法
你之前出错的原因很明确:如果分两次执行更新(先把male改成female,再把female改成male),第一次更新后原本的male会变成female,第二次更新时所有female(包括原有的和刚修改的)都会被改成male,最终所有值都成了male。
正确的做法是一次性完成双向替换,用单条UPDATE语句通过条件判断实现,避免中间状态的干扰。
方法一:使用 CASE WHEN 语句
适合需要处理多种取值的场景,能保留非male/female的原始值:
UPDATE your_table_name SET gender = CASE WHEN gender = 'male' THEN 'female' WHEN gender = 'female' THEN 'male' ELSE gender -- 如果有其他性别取值(比如NULL),保留原内容 END;
方法二:使用 IF 函数
逻辑更简洁,适合只有male和female两种取值的情况:
UPDATE your_table_name SET gender = IF(gender = 'male', 'female', 'male');
重要提醒
- 执行更新前,建议先运行SELECT语句验证结果是否符合预期:
SELECT gender, CASE WHEN gender = 'male' THEN 'female' WHEN gender = 'female' THEN 'male' ELSE gender END AS new_gender FROM your_table_name;
- 操作前务必备份数据,避免误操作导致数据丢失。
内容的提问来源于stack exchange,提问作者phpstarter
相关产品推荐
相关产品推荐

