如何使用单条SQL语句批量翻转students表的status字段值
批量互换students表中status字段的'yes'和'no'值
Got it! 要实现这个status字段的双向互换更新,一条SQL语句就能搞定,这里给你两种实用的写法:
通用跨数据库写法(推荐)
用CASE WHEN表达式,这在绝大多数关系型数据库(比如MySQL、PostgreSQL、SQL Server等)都能正常运行,还能兼容其他可能存在的status值:
UPDATE students SET status = CASE WHEN status = 'yes' THEN 'no' WHEN status = 'no' THEN 'yes' ELSE status -- 如果表中还有其他status值,这行可以保留它们不变 END;
MySQL专属简洁写法
如果你用的是MySQL,还可以用IF函数来简化代码:
UPDATE students SET status = IF(status = 'yes', 'no', 'yes');
重要小提醒
- 执行更新前,强烈建议先跑一条查询语句验证结果,避免误操作:
SELECT id, name, status, CASE WHEN status = 'yes' THEN 'no' WHEN status = 'no' THEN 'yes' ELSE status END AS new_status FROM students; - 如果你的
students表中只有'yes'和'no'两种status值,那通用写法里的ELSE status可以省略,但保留它会让代码更健壮,防止后续新增其他状态时出现意外。
内容的提问来源于stack exchange,提问作者Neeraj Prajapati
相关产品推荐
相关产品推荐

