这篇文章主要介绍MySQL 5.7中REPLACE语句怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

REPLACE类似INSERT,会以主键或唯一索引为条件,如果插入行的主键或唯一键在表中已经存在,旧的记录会被更新;如果插入行的主键或唯一键在表中不存在,会插入这一条记录。REPLACE是MySQL对SQL标准的扩展。

示例①,第二条记录由于和第一条记录的主键相同,第一条记录会被更新

CREATETABLEtest(idINTUNSIGNEDNOTNULLAUTO_INCREMENT,dataVARCHAR(64)DEFAULTNULL,tsTIMESTAMPNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,PRIMARYKEY(id));

mysql>REPLACEINTOtestVALUES(1,'Old','2014-08-2018:47:00');QueryOK,1rowaffected(0.04sec)mysql>REPLACEINTOtestVALUES(1,'New','2014-08-2018:47:42');QueryOK,2rowsaffected(0.04sec)mysql>SELECT*FROMtest;

+----+------+---------------------+|id|data|ts|+----+------+---------------------+|1|New|2014-08-2018:47:42|+----+------+---------------------+1rowinset(0.00sec)

示例②,第二条记录的主键和第一条记录的主键不相同,会将第二条记录插入到表中,并保留第一条记录

CREATETABLEtest2(idINTUNSIGNEDNOTNULLAUTO_INCREMENT,dataVARCHAR(64)DEFAULTNULL,tsTIMESTAMPNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,PRIMARYKEY(id,ts));

mysql>REPLACEINTOtest2VALUES(1,'Old','2014-08-2018:47:00');QueryOK,1rowaffected(0.05sec)mysql>REPLACEINTOtest2VALUES(1,'New','2014-08-2018:47:42');QueryOK,1rowaffected(0.06sec)mysql>SELECT*FROMtest2;

+----+------+---------------------+|id|data|ts|+----+------+---------------------+|1|Old|2014-08-2018:47:00||1|New|2014-08-2018:47:42|+----+------+---------------------+2rowsinset(0.00sec)

以上是“MySQL 5.7中REPLACE语句怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!