一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

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国产 | 国产成人v爽在线免播放观看 | 91嫩草国产在线观看免费 | 激情艳妇 | 97影视| 精品国产午夜久久久久九九 | 亚洲美色综合天天久久综合精品 | 日韩精品成人a在线观看 | 男人叼女人的痛爽视频免费 | 国产一区二区三区高清视频 | 手机在线观看网站免费视频 | 亚洲邪恶天堂影院在线观看 | 午夜想想爱午夜剧场 | 出a级黑粗大硬长爽猛视频 吃胸膜奶视频456 | 精品久久久久久 | 四虎国产精品免费久久麻豆 | 亚洲天堂中文字幕 | zoz.zzz色| 大团圆6全文在线阅读 | 亚洲国产第一区二区香蕉日日 | 超碰成人在线播放 | 国产一级特黄aa大片在线 | 蜜桃影像传媒推广 | 美国一级大黄大色毛片 | 欧美日韩国产手机在线观看视频 | 92精品国产成人观看免费 | 麻豆网 | 国产精品福利在线观看秒播 | 国产一区二区视频在线播放 | chinesezoozvideos| 亚洲AV无码乱码在线观看浪潮 | 太大了轻点阿受不了小说h 四色6677最新永久网站 | 四虎新网址 | 国内在线观看 | 日韩一区二区三区免费 | 日本草草视频在线观看 | 四虎影院免费在线 | 成人 在线欧美亚洲 |