mysql insert 存在即不插入語法
介紹兩種方式
第一種:replace into
replace into table(id, name) values(1, '張三') ;
/*或者*/
replace into table(id, name) select 1, '張三' ;
replace into 跟 insert 功能類似。
不同點在於:replace into 首先嚐試插入資料到表中
1. 如果發現表中已經有此行資料(根據主鍵或者唯一索引判斷)則先刪除此行資料,然後插入新的資料。
2. 否則,直接插入新資料。
要注意的是:插入資料的表必須有主鍵或者是唯一索引!
否則的話,replace into 會直接插入資料,這將導致表中出現重複的資料。
第二種:DUAL臨時表
insert into table(id, name)
select null, '張三' from DUAL
where not exists (select id from table where name = '張三') ;
其中的 DUAL 是一個臨時表,不需要物理建立,直接用即可。
這種就不需要上述那種必須主鍵相同或者有唯一索引的欄位。
兩種效果區別
第一種:不存在即插入,存在即修改
第二種:不存在即插入,存在則不做處理
相關推薦
mysql insert 存在即不插入語法
介紹兩種方式 第一種:replace into replace into table(id, name) values(1, '張三') ; /*或者*/ replace into table(id, name) select 1, '張三' ; replace i
mysql使用存儲過程插入數據後,參數為中文的為?或亂碼
做了 cnblogs 現象 顯示 題解 中文 原因 png 操作 最近了解了一下mysql存儲過程,之前版本的mysql不支持存儲過程,5.0版本後就可以支持存儲過程的使用;恰好筆者下載使用版本為5.6.20: 做了一個給表插入數據的簡單存儲過程,發現打開表後漢字全部
MySQL怎麼存文字不亂碼
MySQL裡怎麼儲存那些看起來會亂碼的字元?我在“UTF8字符集的表怎麼直接轉UTF8MB4”一文中介紹瞭如何把表字符集由UTF8直接轉換成UTF8MB4的幾種方法。 導讀 MySQL裡怎麼儲存那些看起來會亂碼的字元? 我在“UTF8字符集的表怎麼直接轉UT
mysql insert into (高併發插入時出現的問題) 解決
筆者最近工作中,遇到了一個問題就是筆者在給使用者新增虛擬資源的時候出現了資源表中出現了uid 重複 如果按照程式碼梳理應該不會發生這種情況,但是抽獎程式在高量的併發下 出現了 使用者id 重複 程式程式碼: $badge_data = DB::connection(
mysql insert判斷記錄存不存在 存在即更新不存在即插入 DUPLICATE key update
當判斷一條記錄是否存在不是唯一的主鍵而是多個條件的時候就懵了啊。。 當這種情況出現時當然還是要用 DUPLICATE key update關鍵詞了 但是但是 是有前提條件的,,因為我們是三個條件判斷記錄是否存在,這個時候必須用到了聯合主鍵,,什麼事聯合主鍵 百度吧 語句
MySQL INSERT插入條件判斷:如果不存在則插入
sts 想要 where sele rom sel 臨時表 dual insert語句 MySQL INSERT插入條件判斷:如果不存在則插入 我們經常需要進行sql的批量插入,要求:該條記錄不存在則插入,存在則不插入。如果使用一條INSERT語句實現呢? 對於普通的 IN
mysql使用存儲過程&函數實現批量插入
tar max commit mysq like until code 插入數據 call 寫這邊文章的目的,是想結合mysql 存儲過程+函數完成一個批量刪除的功能吧...正好也好加深下對procedure和function的熟練操作吧...廢話不多說,我就直接上表結構啦
mysql 安裝完畢後登陸不了mysql的 shell 即mysql>遇到:ERROR 1045 (28000): Access denied for user 'root'@'localhost‘
留下 popu enter sof eat sin 方式 alt star [root@hzswtb2-mpc ~]# mysql ERROR 1045 (2800
Mysql:存儲過程遊標不進循環的原因詳解
一個 -- 它的 過程 tin hand 朋友 作用 size ------------吾亦無他,唯手熟爾,謙卑若愚,好學若饑------------- 本篇博客給剛接觸存儲過程的朋友做個引導作用,目的是解決遊標不走循環 很多人發現他的遊標
mysql INSERT的幾個語法 IGNORE|REPLACE|LOW_PRIORITY | DELAYED
INSERT IGNORE 與INSERT INTO的區別就是INSERT IGNORE會忽略資料庫中已經存在 的資料,如果資料庫沒有資料,就插入新的資料,如果有資料的話就跳過這條資料。這樣就可以保留資料庫中已經存在資料,達到在間隙中插入資料的目的。 REPLACE的執行與INSERT很相
mysql中如何不重複插入,mysql 重複的不插入,mysql唯一的插入
INSERT INTO new_schedules_spider_shipsname ( ID,SCAC,VESSEL,VOYAGE,SERVICE_NAME,MD5 ) SELECT NULL,%s,%s,%s,%s,%s FROM DUAL WHERENOT EXISTS ( SELECT *
mysql 批量插入,存在則不插入該條資料
sql語法: 1.修改該欄位屬性為 unique;比如 c 欄位; 2.執行sql:insert ignore into tbname(a,b,c) values('1
mysql將一個表的資料插入到另外一個表,如果某個欄位已經存在將不插入的sql
insert into registerInfo_extend (userId,name) select userId,'遊客' from registerInfo where not exists (
mysql insert語法注意事項(ON DUPLICATE KEY UPDATE )
NSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON
數據庫增刪改查(另外解決Mysql在linux下不能插入中文的問題)
int 添加數據 double gbk linu 數值範圍 字符集 圖片 數值 數據庫增刪改查 增加 首先我們創建一個數據庫user,然後創建一張表employee create table employee( id int pri
mysql insert插入的3種方法
ngs 分享圖片 student 技術 select into union lec val 測試表student的字段 1.插入一條數據 INSERT INTO student(sid,sname,sage,ssex) VALUES(1,"wangdali",
mysql內存數據淘汰機制和大查詢會不會把內存打爆?
.net 返回 用戶 鏈表 sql查詢 順序 rom 重新 效果 首先我們說一下大查詢會不會把內存打爆? 比如說主機內存有5g,但是我們一個大查詢的數據有10g,這樣會不會把內存打爆呢? 答案:不會 為什麽? 因為mysql讀取數據是采取邊讀邊發的策略 selec
mysql server-存儲引擎
memory server 數據庫 mysql 在線 mysql server系統架構 邏輯模塊組成:mysql邏輯模塊可以分為兩層架構,第一層是sql layer主要包括權限判斷、sql解析、執行計劃優化、query cache的處理等;第二
MYSQL 內存報錯 Use 'mysqld --thread_stack=#' to specify a bigger stack.
mysql 內存報錯 use 'mysqld --thread_stack=#' to specify a bigger stack.MYSQL 內存報錯 Use ‘mysqld --thread_stack=#‘ to specify a bigger stack.今天在使用mysql的過程
mysql安裝後找不到sock文件
sql bsp 卸載 led rep mysql 查 之前 排查 rpm mysql rpm安裝方式之後,啟動找不到sock文件,經排查是之前安裝的由mysql, 需要時yum list installed mysql 或者 rpm -qa |grep -i mysql