MySQL同表不同字段互相替换

日常项目中常见表中两个字段有一些数据存值相反导致业务错误,这个时候需要脚本执行把数据替换。

小编下面的sql语句是把test表中员工编号和员工编码存在错误的数据替换,错误数据的条件是员工编码存的员工姓名,员工姓名存的员工编码。这时候用到了regexp这个函数,判断字段里是否是汉字还是数值,是数字返回0汉字返回1,下面是脚本

sql 复制代码
UPDATE test a,
 test b
SET a.USER_NO = b.USER_NO_NAME,
 a.USER_NO_NAME = b.USER_NO
WHERE
	a.id = b.id
AND a.id IN (
	SELECT
		id
	FROM
		(
			SELECT
				id,
				(
					USER_NO_NAME REGEXP '[^0-9.]'
				) AS data_flag,
				USER_NO_NAME
			FROM
				test
		) a
	WHERE
		data_flag = 0
)
相关推荐
sweetone32 分钟前
夏普LCD-46LX530A液晶电视机不开机故障之小修(包含RUNTKA829WJQZ电源板实测电路图)
经验分享·音视频
xuhaoyu_cpp_java3 小时前
SpringBoot学习(四)
java·经验分享·spring boot·笔记·学习
隔壁阿布都4 小时前
MySQL 间隙锁死锁问题处理
数据库·mysql
黑马水牛6 小时前
PC+RK3588连板在线调试模型推理
人工智能·经验分享·深度学习
ywl4708120876 小时前
mysql 锁定读和非锁定读
数据库·mysql
流浪0017 小时前
MySQL数据库基础篇(三):MySQL 数据库库级操作全解:创建、字符集、管理与备份恢复实战
数据库·mysql
钝挫力PROGRAMER7 小时前
MySQL 数据截断错误 #22001:原因分析与解决方案
数据库·mysql
德思特7 小时前
弱网测试方案:衰减器如何模拟真实环境的信号衰减?
经验分享
易知微EasyV数据可视化8 小时前
定制化3D组件开发:打造差异化孪生体验
前端·人工智能·经验分享·数字孪生
万亿少女的梦1688 小时前
基于Spring Boot与MySQL的乡镇群众服务系统设计与实现
java·spring boot·mysql·权限管理·前后端分离