欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)文章

  • MySql 5.6.14 Win32位免安裝解壓縮版配置教程

    MySql 5.6.14 Win32位免安裝解壓縮版配置教程

    本文給大家介紹mysql 5.6.14 win32 位免安裝解壓縮版配置方法,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,對(duì)mysql5.6.14 免安裝解壓縮版配置方法感興趣的朋友一起看看吧
    2016-11-11
  • innodb系統(tǒng)表空間維護(hù)方法

    innodb系統(tǒng)表空間維護(hù)方法

    下面小編就為大家?guī)?lái)一篇innodb系統(tǒng)表空間維護(hù)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 淺談MySQL存儲(chǔ)過(guò)程中declare和set定義變量的區(qū)別

    淺談MySQL存儲(chǔ)過(guò)程中declare和set定義變量的區(qū)別

    下面小編就為大家?guī)?lái)一篇淺談MySQL存儲(chǔ)過(guò)程中declare和set定義變量的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • Mysql中where與having的區(qū)別實(shí)例詳解

    Mysql中where與having的區(qū)別實(shí)例詳解

    當(dāng)SQL語(yǔ)句中使用聚合函數(shù),然后又需要對(duì)聚合函數(shù)的記錄集進(jìn)行篩選過(guò)濾時(shí),這個(gè)時(shí)候就需要用到Having子句,下面這篇文章主要給大家介紹了關(guān)于Mysql中where與having區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • mysql截取函數(shù)常用方法使用說(shuō)明

    mysql截取函數(shù)常用方法使用說(shuō)明

    常用的mysql截取函數(shù)有:left(), right(), substring(), substring_index(),很多新手朋友不是很了解,接下來(lái)詳細(xì)說(shuō)明,需要的朋友可以參考下
    2012-12-12
  • 解決Mysql主從錯(cuò)誤:could not find first log file name in binary

    解決Mysql主從錯(cuò)誤:could not find first log&nbs

    這篇文章主要介紹了解決Mysql主從錯(cuò)誤:could not find first log file name in binary問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Mysql5.7服務(wù)無(wú)法啟動(dòng)的圖文解決教程

    Mysql5.7服務(wù)無(wú)法啟動(dòng)的圖文解決教程

    這篇文章主要介紹了Mysql5.7服務(wù)無(wú)法啟動(dòng)問(wèn)題,解決辦法非常簡(jiǎn)單,需要的的朋友參考下
    2017-02-02
  • MySQL8.0.20單機(jī)多實(shí)例部署步驟

    MySQL8.0.20單機(jī)多實(shí)例部署步驟

    本文主要介紹了MySQL8.0.20單機(jī)多實(shí)例部署步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • MySQL存儲(chǔ)過(guò)程中游標(biāo)循環(huán)的跳出和繼續(xù)操作示例

    MySQL存儲(chǔ)過(guò)程中游標(biāo)循環(huán)的跳出和繼續(xù)操作示例

    這篇文章主要介紹了MySQL存儲(chǔ)過(guò)程中游標(biāo)循環(huán)的跳出和繼續(xù)操作示例,解決了在MySQL存儲(chǔ)過(guò)程中循環(huán)時(shí)執(zhí)行游標(biāo)的一個(gè)conitnue的操作解決方法,需要的朋友可以參考下
    2014-07-07
  • 怎么重置mysql的自增列AUTO_INCREMENT初時(shí)值

    怎么重置mysql的自增列AUTO_INCREMENT初時(shí)值

    怎么重置mysql的自增列想必有很多的朋友都不會(huì)吧,下面與大家分享下常用的幾種方法,不懂的朋友可以了解下哈,希望對(duì)大家有所幫助
    2013-06-06

最新評(píng)論