一般正常的情况下都会遇到这种需求

有一些数据信息,我们每次发生请求的时候,要判断此条数据是否存在,如果存在则进行修改操作,反则进行插入操作,一般人都会这样写

if($name1==$name2){

$sql="update table set a1='a1'";

}else{

$sql="insert into table(a1) values('a1')";

}

现在刚发现mysql有个自带的函数,可以一句sql就代替上面的代码 ,php判断都不用写了,这个方法就是

ON DUPLICATE KEY UPDATE

用法如下

   $sql="insert into cinema(movieName,releaseInfo,sumBoxInfo,boxInfo,boxRate,showInfo,showRate,avgShowView,avgSeatView) values
('$movieName','$releaseInfo','$sumBoxInfo','$boxInfo','$boxRate','$showInfo','$showRate','$avgShowView','$avgSeatView') ON DUPLICATE KEY UPDATE
movieName='$movieName',releaseInfo='$releaseInfo',sumBoxInfo='$sumBoxInfo',boxInfo='$boxInfo',
boxRate='$showInfo',showInfo='$showInfo',showRate='$showRate',avgShowView='$avgShowView',avgSeatView='$avgSeatView'";

用的时候 注意一下,最好保持有一个主键,到时候程序会根据你的这个主键 是否相同,去判断这条数据是否存在,比如说 movieName是主键,则sql判断的时候会去找 movieName在表中是否有相同的,如果有 则进行修改,没有则进行插入操作。

有的人 会问,如果有多个索引 怎么办呢,这个我还没测试呢,从网上找了一段解释,你们看下

若多个索引都冲突,则只有一条记录被修改。
create table test(
id int not null primary key,
num int not null UNIQUE key,
tid int not null
)
为了测试两个唯一索引都冲突的情况,然后插入下面的数据

insert into test values(1,1,1), (2,2,2);
然后执行:

insert into test values(1,2,3) on duplicate key update tid = tid + 1;
因为a和b都是唯一索引,插入的数据在两条记录上产生了冲突,然而执行后只有第一条记录被修改

转载于:https://www.cnblogs.com/HoverM/p/9259320.html

一条mysql语句判断是添加还是修改相关推荐

  1. 一条mysql语句查询出男女的人数

    统计报表中,为了实现一条mysql语句查询出男女的人数,sql语句如下: #年末年龄统计表 select COUNT(case when info.sex = 'm' then sex end ) a ...

  2. mysql自动添加多条数据_用一条mysql语句插入多条数据

    这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助 假如有一个数据表A: id name title addtime 如果需要插入n条数 ...

  3. 一条mysql语句是事务吗_没想到!我在简历上写了“精通MySQL”,阿里面试官跟我死磕后就给我发了高薪offer...

    事情是这样的 前段时间面试了阿里,大家也都清楚,如果你在简历上面写着你精通XX技术,那面试官就会跟你死磕到底. 我就是在自己的简历上写了精通MySQL,然后就开启了和阿里面试官的死磕之路,结果就是拿到 ...

  4. mysql 删除 修改数据库语句_数据库——添加,修改,删除

    需要执行的SQL语句: 数据库中对数据进行的添加.修改和删除操作均属于数据库操纵语言(DML),这类类型的SQL语句只有执行数据控制语言(DCL)中的commit才能使之起作用,DCL语言中的roll ...

  5. 初识Mysql(part19)--我需要知道的3条Mysql语句之组合查询

    学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:UNION.UNION ALL 此Blog会用到下面2个表. temp_product2: # id, ...

  6. 初识Mysql(part17)--我需要知道的3条Mysql语句之联结

    学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:联结.INNER JOIN.ON关键字 此Blog会用到下面3个表. temp_store表: # p ...

  7. 用一条mysql语句插入多条数据

    这篇文章主要介绍了在mysql中使用一条sql语句插入多条数据,效率非常高,但是原理其实很简单,希望对大家有所帮助 假如有一个数据表A: id name title addtime 如果需要插入n条数 ...

  8. c mysql显示多条数据_用一条mysql语句插入多条数据

    假如有一个数据表A: id name title addtime 如果需要插入n条数据 : $time= time(); $data = array( array( 'name'=>'name1 ...

  9. 初识Mysql(part5)--我需要知道的11条Mysql语句之过滤

    学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:WHERE关键字.AND关键字.OR关键字.IS关键字.IN关键字 此Blog里的例子都会用下面int ...

最新文章

  1. (转)Thread的中断机制(interrupt)
  2. JVM调优常用参数配置
  3. windows下面的txt在linux下面显示为乱码
  4. 三分钟教你用 Scarlet 写一个 WebSocket App
  5. python编程入门与案例详解-Python爬虫天气预报实例详解(小白入门)
  6. Ubuntu安装anaconda,tensorflow,keras,pytorch
  7. Linux 命令之 crontab 计划任务与自动同步系统时间
  8. linux系统有界面么,linux系统界面详情介绍
  9. 使用ActivityGroup管理Activity
  10. 韦东山Linux嵌入式学习——硬件复习
  11. 2019年 CCF 中国计算机学会推荐国际学术会议和期刊目录 最新版
  12. 【某deed和某app面试】
  13. vim : 删除不包含某字符的行
  14. 疑难杂症篇(五)--从word2019复制编辑好的公式到visio2019出现乱码的解决方案
  15. 计算机中分类汇总的列子,EXCEL函数大全(含详细例子)-excel函数大全详细.pdf
  16. er图转换成关系模型的例题_有关数据库系统的练习题 E-R图的关系画图转换,,急需 谢谢了...
  17. 11 个非常有用的 HTML One-Liners
  18. 【一窥道德经】第三章
  19. ADI Blackfin DSP处理器-BF533的开发详解8:Timer定时器的驱动和应用(含源代码)
  20. Python双线性插值和双三次插值

热门文章

  1. 浙江哪个地方的杨梅最出名?
  2. 转专业有什么要求吗?
  3. 我有30万现金,如何规划理财,让钱生钱?
  4. 文化的作用与本质是什么
  5. SpringSecurity入门
  6. c# mysql数据集_C#第四次作业:MySQL数据库及C#操作MySQL数据库
  7. SQL varchar数据类型深入探讨
  8. 学习SQL:INNER JOIN与LEFT JOIN
  9. 使用SQL Server进行时间点恢复
  10. c#代码如何连数据库快照_5127数据库快照错误代码的含义