判斷數據庫中是否存在某條數據,一條mysql語句判斷是添加還是修改

 2023-10-18 阅读 22 评论 0

摘要:一般正常的情況下都會遇到這種需求 判斷數據庫中是否存在某條數據。有一些數據信息,我們每次發生請求的時候,要判斷此條數據是否存在,如果存在則進行修改操作,反則進行插入操作,一般人都會這樣寫 ?if($name1==$name2){ ?$sql=

一般正常的情況下都會遇到這種需求

判斷數據庫中是否存在某條數據。有一些數據信息,我們每次發生請求的時候,要判斷此條數據是否存在,如果存在則進行修改操作,反則進行插入操作,一般人都會這樣寫

?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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/149861.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息