mysql 存在该记录则更新,不存在则插入记录的sql

很文博客hinwi.com 数据库评论351字数 1050阅读模式
广告也精彩

非常不错的功能,主要用于更新特定的记录,如果存在这条记录则更新一下,如果不存在则插入记录。应用于配置文件等。

  1. INSERT table (auto_id, auto_name) values (1, ‘yourname') ON DUPLICATE KEY UPDATE auto_name='yourname'

ON DUPLICATE KEY UPDATE的使用
如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:文章源自很文博客https://www.hinwi.com/很文博客-https://www.hinwi.com/46656.html

  1. mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
  2. -> ON DUPLICATE KEY UPDATE c=c+1;
  3. mysql> UPDATE table SET c=c+1 WHERE a=1;

如果行作为新记录被插入,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。
注释:如果列b也是唯一列,则INSERT与此UPDATE语句相当:文章源自很文博客https://www.hinwi.com/很文博客-https://www.hinwi.com/46656.html

  1. mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;

如果a=1 OR b=2与多个行向匹配,则只有一个行被更新。通常,您应该尽量避免对带有多个唯一关键字的表使用ON DUPLICATE KEY子句。
您可以在UPDATE子句中使用VALUES(col_name)函数从INSERT...UPDATE语句的INSERT部分引用列值。换句话说,如果没有发生重复关键字冲突,则UPDATE子句中的VALUES(col_name)可以引用被插入的col_name的值。本函数特别适用于多行插入。VALUES()函数只在INSERT...UPDATE语句中有意义,其它时候会返回NULL。
示例:文章源自很文博客https://www.hinwi.com/很文博客-https://www.hinwi.com/46656.html

  1. mysql> INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
  2. -> ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

本语句与以下两个语句作用相同:文章源自很文博客https://www.hinwi.com/很文博客-https://www.hinwi.com/46656.html

  1. mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
  2. -> ON DUPLICATE KEY UPDATE c=3;
  3. mysql> INSERT INTO table (a,b,c) VALUES (4,5,6)
  4. -> ON DUPLICATE KEY UPDATE c=9;

当您使用ON DUPLICATE KEY UPDATE时,DELAYED选项被忽略。文章源自很文博客https://www.hinwi.com/很文博客-https://www.hinwi.com/46656.html 文章源自很文博客https://www.hinwi.com/很文博客-https://www.hinwi.com/46656.html

工具:作品在线观看

女优:最新作品观看

中文:国语在线观看

weinxin
我的微信
扫一扫更精彩
大家的支持是我更新的动力!!!
 
  • 插入记录的sql
  • mysql 存在该记录
广告也精彩
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证