MySql避免重複插入sql語句

2021-07-27 06:36:56 字數 2394 閱讀 6420

惡補下mysql中的幾個特殊sql語法,避免面試過程中被人問到,答不上來

1、ignore(primary key)

用例:

insert ignore into user_table(id,name,age) values(1,'wpf',20);

若記錄已經存在,則忽略本次操作,返回影響行為0,否則執行插入操作,返回影響行為1

2、replace(primary key)

用例:

replace into user_table(id,name,age) values(1,'xiaoming',20);

若記錄已經存在,則刪除老的記錄,插入此新的記錄,否則直接插入,返回值表示插入和刪除的記錄總和,例如用例中已經存在了,則返回的影響行數為2

3、on duplicate key update(primary key | unique索引)

用例:

insert into user_table(id,name,age) values(1,'lisi',23) on duplicate key update age= values(age) + 1;

若記錄已經存在,則執行後面的update操作,否則執行插入操作

存在執行的等價操作為:

update user_table set age = 24 where id=1;

若name行也有索引,則執行的等價操作為:

update user_table set age = 24 where id=1 or name='lisi' limit 1;

4、delayed

用例:

insert delayed into user_talbe(id,name,age) values(1,'wpf',20);

立即返回執行結果,但真正的插入操作被延緩執行了,只有在伺服器發現沒有讀取操作時才會從延遲佇列中讀取並執行插入操作。

5、內聯(inner join)

用例:

select * from t1 inner join t2 on t1.uid=t2.uid;

等價操作:

select * from t1,t2 where t1.uid=t2.uid;

6、左外連線(left outer join),右外連線(right outer join),全外連

接(full outer join)

用例:

select * from t1 left outer join t2 on t1.uid=t2.uid;

t1表全顯示,並補全顯示t2.uid=t1.uid的資訊,若t2中不存在則顯示null

select * from t1 right outer join t2 on t1.uid=t2.uid;

t2表全顯示,並補全顯示t1.uid=t2.uid的資訊,若t1中不存在則顯示null

select * from t1 full outer join t2 on t1.uid=t2.uid;

t2,t1全顯示,若t1.uid=t2.uid,則合併一行顯示,否則顯示t1 null / t2 null

7、組合(union)

用例:

select uid,name from t1 union select uid,name from t2 order by uid;

將兩個查詢結果合併顯示,若不想去重可以使用union all。注意使用union時要求兩個select查詢的資訊相同,包括欄位名,字段型別(若可相互轉換也可以),聚合函式。

Mysql避免重複插入記錄

可使用ignore關鍵字 如果有用主鍵primary key或者唯一索引unique區分了記錄的唯一性,當我們無意插入相同資料的時候 主鍵值或是唯一索引值重複 insert into table name email,phone,user id values test 163.com 99999 9...

mysql避免重複插入記錄

1.ignore,如果遇到新插入的資料中與原有資料有唯一鍵衝突,會忽略操作,返回0 insert ignore into table name email phone user id values test9 163.com 99999 9999 2.replace,如果有衝突,會進行兩個操作 刪除...

MySQL 避免重複插入 IGNORE

mysql 提供了ignore 用來避免資料的重複插入.ignore 若有導致unique key 衝突的記錄,則該條記錄不會被插入到資料庫中.示例 insert ignore into table name email phone user id values test qq.com 123 11...