最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql 記錄不存在時(shí)插入 記錄存在則更新的實(shí)現(xiàn)方法

 更新時(shí)間:2008年08月30日 22:24:03   作者:  
相信很多人都需要用到這個(gè)語(yǔ)句,請(qǐng)看下文:(在4.1以后的版本才有效)
mysql 記錄不存在時(shí)插入
在 MySQL 中,插入(insert)一條記錄很簡(jiǎn)單,但是一些特殊應(yīng)用,在插入記錄前,需要檢查這條記錄是否已經(jīng)存在,只有當(dāng)記錄不存在時(shí)才執(zhí)行插入操作,本文介紹的就是這個(gè)問(wèn)題的解決方案。

問(wèn)題:我創(chuàng)建了一個(gè)表來(lái)存放客戶信息,我知道可以用 insert 語(yǔ)句插入信息到表中,但是怎么樣才能保證不會(huì)插入重復(fù)的記錄呢?

答案:可以通過(guò)使用 EXISTS 條件句防止插入重復(fù)記錄。

示例一:插入多條記錄

假設(shè)有一個(gè)主鍵為 client_id 的 clients 表,可以使用下面的語(yǔ)句:

復(fù)制代碼 代碼如下:

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);

示例一:插入單條記錄
復(fù)制代碼 代碼如下:

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 語(yǔ)句后面直接跟上要插入字段的值,即使這些值還不存在當(dāng)前表中。

mysql 記錄不存在時(shí)插入 記錄存在則更新的實(shí)現(xiàn)方法
復(fù)制代碼 代碼如下:

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>
當(dāng)然,建表的時(shí)候,千萬(wàn)別忘記了給domain做一個(gè)unique
UNIQUE KEY `domain` (`domain`,`report_date`)

相關(guān)文章

最新評(píng)論

彭山县| 怀化市| 普定县| 武冈市| 且末县| 二连浩特市| 孟村| 康马县| 鹤岗市| 武隆县| 东台市| 宜城市| 建德市| 陵水| 乐亭县| 新竹县| 建德市| 湟源县| 巫溪县| 本溪市| 舞钢市| 麻阳| 金昌市| 呼和浩特市| 黄大仙区| 新乡市| 马关县| 威信县| 开化县| 贞丰县| 彭阳县| 防城港市| 天津市| 塔河县| 蒲城县| 怀远县| 察隅县| 东莞市| 伊宁市| 兴安县| 怀来县|