1. 程式人生 > >mysql insert 存在即不插入語法

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 是一個臨時表,不需要物理建立,直接用即可。

這種就不需要上述那種必須主鍵相同或者有唯一索引的欄位。

 

 

兩種效果區別

第一種:不存在即插入,存在即修改

第二種:不存在即插入,存在則不做處理