MySQL使用中遇到的状况:存在即更新,不存在即插入

  • 存在即更新,不存在即插入。

insert into 表名(字段1,字段2) VALUES(值1,值2) 
ON DUPLICATE KEY UPDATE username=值3

前提是插入字段中,必须有字段或者字段组合 为主键或者唯一,当插入时,数据库会判断是否存在,如果存在,则运行update后的操作。如果不存在则运行on duplicate之前的插入操作。

这种方式比较常用,比如需要增加某个任务,和原有用户表挂钩,新表中每次都要判定是否该用户已生成,没有生成则插入,生成则更新,与其用代码逻辑实现,不如用这种方式。

从返回结果可知,当更新时,并且确实更新了数据时,操作条数为2。当插入时,操作条数为1

批量

INSERT INTO u_d (`仪表类型`, `仪表编号`, `累积流量`, `标况累积流量`) VALUES
('U','323456456','true','false'),
('U','190400001','true','false'),
('U','190400003','true','false')
ON DUPLICATE KEY UPDATE `累积流量`='false',`标况累积流量`='true';
  • 存在则删除而后插入,不存在则插入

REPLACE INTO 表名(字段1,字段2)
VALUES(值A,值B);

判定条件与第一方式相同,区别是如果存在就先删除而后插入。一般用作重制某条数据,因为此操作可以将该条数据的其他字段一并清除。

批量

REPLACE INTO u_d (`仪表类型`, `仪表编号`, `累积流量`, `标况累积流量`) 
VALUES
('U','323456456','true','false'),
('U','190400001','true','false'),
('U','190400003','true','false')
  • 存在则忽略,不存在插入

INSERT IGNORE INTO 表名(字段1,字段2)
VALUES(值A,值B);

判定条件与第一方式相同。存在忽略时会报警告

批量

INSERT IGNORE  INTO u_d (`仪表类型`, `仪表编号`, `累积流量`, `标况累积流量`) VALUES
('U','323456456','true','false'),
('U','190400001','true','false'),
('U','190400011','true','false')

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值