激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - mysql 記錄不存在時插入 記錄存在則更新的實現方法

mysql 記錄不存在時插入 記錄存在則更新的實現方法

2019-10-24 17:27mysql教程網 Mysql

mysql 記錄不存在時插入 記錄存在則更新的實現方法,相信很多人都需要用到這個語句,請看下文:(在4.1以后的版本才有效)

mysql 記錄不存在時插入
在 MySQL 中,插入(insert)一條記錄很簡單,但是一些特殊應用,在插入記錄前,需要檢查這條記錄是否已經存在,只有當記錄不存在時才執行插入操作,本文介紹的就是這個問題的解決方案。 

問題:我創建了一個表來存放客戶信息,我知道可以用 insert 語句插入信息到表中,但是怎么樣才能保證不會插入重復的記錄呢? 

答案:可以通過使用 EXISTS 條件句防止插入重復記錄。 

示例一:插入多條記錄 

假設有一個主鍵為 client_id 的 clients 表,可以使用下面的語句: 

復制代碼代碼如下:


INSERT INTO clients 
(client_id, client_name, client_type) 
SELECT supplier_id, supplier_name, 'advertising' 
FROM suppliers 
WHERE not exists (select * from clients 
where clients.client_id = suppliers.supplier_id); 


示例一:插入單條記錄 

復制代碼代碼如下:


INSERT INTO clients 
(client_id, client_name, client_type) 
SELECT 10345, 'IBM', 'advertising' 
FROM dual 
WHERE not exists (select * from clients 
where clients.client_id = 10345); 


使用 dual 做表名可以讓你在 select 語句后面直接跟上要插入字段的值,即使這些值還不存在當前表中。

mysql 記錄不存在時插入 記錄存在則更新的實現方法

復制代碼代碼如下:


mysql> truncate `200702`; 
Query OK, 0 rows affected (0.01 sec) 
mysql> select * from `200702`; 
Empty set (0.01 sec)<span id="more-22"></span> 
mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000; 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from `200702`; 
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+ 
| id | domain | 2nd_domain | tld | query_ns1 | query_ns2 | query_ns3 | query_ns4 | report_date | 
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+ 
| 1 | dnspod.com | dnspod | com | 1000 | 2000 | 0 | 0 | 2007-02-04 | 
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+ 
1 row in set (0.00 sec) 

mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000; 
Query OK, 2 rows affected (0.01 sec) 

mysql> select * from `200702`; 
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+ 
| id | domain | 2nd_domain | tld | query_ns1 | query_ns2 | query_ns3 | query_ns4 | report_date | 
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+ 
| 1 | dnspod.com | dnspod | com | 2000 | 4000 | 0 | 0 | 2007-02-04 | 
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+ 
1 row in set (0.01 sec) 
mysql> 

當然,建表的時候,千萬別忘記了給domain做一個unique 
UNIQUE KEY `domain` (`domain`,`report_date`) 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 性色av一区二区三区四区 | 康妮卡特欧美精品一区 | 天海翼四虎精品正在播放 | 久久亚洲成人 | 国产精品久久久久久久久久三级 | 国产成人在线综合 | 美女视频黄视大全视频免费网址 | 国产一区二区三区四区五区加勒比 | 久久久成人精品 | 狠狠色成色综合网 | 久久久久久久久久久久久久久伊免 | 国产日韩在线观看视频 | 国产一区免费视频 | 国产成人在线一区二区 | 久久久久久久久久亚洲 | 免费观看黄视频 | 久久久久久久久久久高潮一区二区 | 久久手机在线视频 | avhd101高清在线迷片麻豆 | 亚洲视频黄| 久久综合入口 | 日韩黄网站 | 国产精品免费久久久久久 | 国产69精品久久久久久久久久 | 欧美一级毛片一级毛片 | 黄色视频a级毛片 | 日本中文视频 | www.91sp| 视屏一区 | 午夜精品在线视频 | 免费观看一级黄色片 | av手机免费在线观看 | 特一级黄色毛片 | 蜜桃网站在线观看 | 欧美a一 | 99热1| 少妇一级淫片高潮流水电影 | 91精品国产综合久久久欧美 | 免费视频a | 艹逼视频污| 精品国产一区二区三区四区阿崩 |