SQL INSERT INTO 不重複

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 不重複

  1. 經驗:在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數據庫中是否存在這條數據,如果不存在,則正常插入,如果存在,則忽略

    1. 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”)

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *