SQL INSERT INTO 不重複
SQL INSERT INTO 不重複
資料來源:http://blog.csdn.net/pandajava/article/details/45667001
語法:
INSERT INTO 表01 (欄位01,欄位02) SELECT 填入值01,填入值02 FROM 虛擬表名稱 WHERE NOT EXISTS(SELECT 欄位01 FROM 表01 WHERE 欄位01 = 填入值01 AND 欄位02 = 填入值02 );
ex:
INSERT INTO area_detail (area_id,door_id,state) SELECT 4,1,1 FROM DUAL WHERE NOT EXISTS(SELECT area_id FROM area_detail WHERE area_id = 4 AND door_id = 1);
PS 虛擬表 不用真實存在
2 thoughts on “SQL INSERT INTO 不重複”
經驗:在MySQL數據庫中,這4種方式避免重複!
https://mp.weixin.qq.com/s?__biz=MzI3OTU0MzI4MQ==&mid=2247500959&idx=2&sn=60d8869afce94f1ec5331a68c0af4da9&chksm=eb44a801dc33211753f21f29d65bc7d9a1f38c55f2c6f90a2e166e1de300f1c5a153ad3c34dc&scene=126&sessionid=1605064993&key=4c8516b93c5f4d5cd7860e5021bd1a3f64f50c23c3684f76dd9ddae96d26b24d59ce64c2ed479e2e76b56058fe23e92efedd8483307a8d957832940ae64edae2a5816c46c5d4478cbecd3360a5c4461353147d8bd0a98d265a55ba825b66900bc0d608b808e3f039d71da5ccddf6746233021afb45bf46a92d02c2392da1f65e&ascene=1&uin=MjIwODk2NDgxNw%3D%3D&devicetype=Windows+10+x64&version=6300002f&lang=zh_TW&exportkey=Auh%2BXpwSHzTcA6ZAvWT8zBw%3D&pass_ticket=IeRo11YVVNJ2XZB31JPqM9vyjn5XLBVmL1hQgcLg%2BE8UVXJiNcqTTcOC3WNj3%2FEQ&wx_header=0
01.01 insert ignore into
即插入數據時,如果數據存在,則忽略此次插入,前提條件是插入的數據字段設置了主鍵或唯一索引,測試SQL語句如下,當插入本條數據時,MySQL數據庫會首先檢索已有數據(也就是idx_username索引),如果存在,則忽略本次插入,如果不存在,則正常插入數
02.on duplicate key update
即插入數據時,如果數據存在,則執行更新操作,前提條件同上,也是插入的數據字段設置了主鍵或唯一索引,測試SQL語句如下,當插入本條記錄時,MySQL數據庫會首先檢索已有數據( idx_username索引),如果存在,則執行update更新操作,如果不存在,則直接插入
03.replace into
即插入數據時,如果數據存在,則刪除再插入,前提條件同上,插入的數據字段需要設置主鍵或唯一索引,測試SQL語句如下,當插入本條記錄時,MySQL數據庫會首先檢索已有數據(idx_username索引),如果存在,則先刪除舊數據,然後再插入,如果不存在,則直接插入
04.insert if not exists
即insert into … select … where not exist … ,這種方式適合於插入的數據字段沒有設置主鍵或唯一索引,當插入一條數據時,首先判斷MySQL數據庫中是否存在這條數據,如果不存在,則正常插入,如果存在,則忽略
EX:
01.
insert ignore into user(username, sex,address) values(“Jack”,”male”,”New York”)
02.
insert into user(username,sex,address) values(“Jack”,”male”, “New York”) on duplicate key update sex=’male’, address=’New York’;
03.
replace into user(username, sex,address) values(“Jack”,”male” “New York”);
04.
insert into user(username, sex, address) select “Jack”,”male”,”New York” from user where not exists (select username from user where username=”Jack”)