MySQL 更新基础数据表

本文探讨了PACS系统中收费项目与HIS系统收费项目不同步的问题,提出了两种解决方案:一是使用INSERT...ON DUPLICATE KEY UPDATE语句进行高效数据更新;二是采用先删除后插入的方式,确保数据一致性。文章详细介绍了两种方法的操作步骤及优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在PACS的MySQL数据库里,收费项目与HIS收费项目不能同步,需要手工更新。

一、使用INSERT INTO TABLE   ON DUPLICATE KEY UPDATE 语句,将数据直接更新。数据库会判断,如果主键存在,则更新相应字段,如果主键不存在,则插入该行数据。

相当于是 UPDATEINSERT 的集合。

优点:语句执行失败不会影响业务。要执行的语句数少,减少失误。

缺点:需要表具有主键,以主键为判断依据。如果是多列联合主键,不能更新联合主键中的列。

--更新数据。如果主键存在,则更新Name、Price、Py三个字段
INSERT INTO ChargeItem ( Id,Wb,Py,ItemKind,Unit,Spec,Price,Name) values
('256504','cectgr','sfctps','08','','','462.00','双肺CT(平扫)') ,
('21006','ut','bz','16','','','0.00','病重'),
('216156','rrjqssgy','smdjjcyz','12','元/项','','307.00','扫描电镜检查与诊断')
ON DUPLICATE KEY UPDATE Name=VALUES(Name),Price=VALUES(Price),Py=VALUES(Py)

二、使用 delete 后 insert 。

将原数据全部删除,再将新数据导入。需要提前做好数据备份,防止导入失败,影响业务。

--备份数据表
create table ChargeItem20170718 (select * from ChargeItem)

--查看备份情况
select * from ChargeItem20170718

--删除原数据
delete from ChargeItem

--插入新数据
insert ChargeItem ( Id,Wb,Py,ItemKind,Unit,Spec,Price,Name) values
('256504','cectgr','sfctps','08','','','462.00','双肺CT(平扫)') ,
('21006','ut','bz','16','','','0.00','病重'),
('216156','rrjqssgy','smdjjcyz','12','元/项','','307.00','扫描电镜检查与诊断')

--如果插入失败,还原数据表。先drop原表,再导入备份的数据
drop table ChargeItem

--还原备份的数据
create table ChargeItem ( select * from ChargeItem20170718)
Insert into ChargeItem (Id,Wb,Py,ItemKind,Unit,Spec,Price,Name) select Id,Wb,Py,ItemKind,Unit,Spec,Price,Name from ChargeItem20180307

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值