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
)
相关推荐
dogeyi7 小时前
数据库操作(1)
mysql
胡二拉二胡7 小时前
抗遗忘单词表深度评测:FSRS 算法与学练考闭环实测
经验分享·笔记
JosieBook7 小时前
【数据库】MySQL 实战精通系列 · 第8篇:慢查询治理与性能优化实战
数据库·mysql·性能优化
这个DBA有点耶8 小时前
分区表深入:分区裁剪失效的6种场景、分区锁机制与维护实战
数据库·mysql·dba
ICMAN12310 小时前
逆变器面板触控为什么总误触发?从 EMI 机理到工业级触摸芯片选型
经验分享·智能硬件·触摸芯片·触控ic
德思特10 小时前
高速数字化仪采样率如何影响信号采集保真度?
经验分享·采样率·数字化仪
德思特11 小时前
GHz采样与多通道同步:高速数字化仪如何破解瞬态信号采集痛点?
经验分享·半导体测试·光纤传感·量子光电·高速数字化仪
浩瀚地学12 小时前
deepagents学习打卡day07
经验分享·笔记·python·学习·agent
做运维的阿瑞13 小时前
一张用户表串懂 MySQL 的库、表、列、行、主键
数据库·sql·mysql·oracle