亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL?INSERT語句實現(xiàn)當(dāng)記錄不存在時插入的幾種方法

 更新時間:2025年03月29日 09:40:40   作者:hh_fine  
MySQL的INSERT語句是用于向數(shù)據(jù)庫表中插入新記錄的關(guān)鍵命令,下面這篇文章主要介紹了MySQL?INSERT語句實現(xiàn)當(dāng)記錄不存在時插入的幾種方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

在 MySQL 中,有幾種方法可以實現(xiàn)"當(dāng)記錄不存在時插入"的操作。以下是幾種常用的解決方案:

使用 INSERT IGNORE

INSERT IGNORE INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

特點:

1.如果記錄已存在(基于主鍵或唯一索引),則忽略插入操作

2.不會報錯,但會返回警告

3.簡單易用,但無法知道是插入成功還是被忽略

使用 ON DUPLICATE KEY UPDATE

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE column1 = VALUES(column1), column2 = VALUES(column2);

特點:

1.如果記錄已存在,則執(zhí)行 UPDATE 操作

2.可以指定更新哪些字段

3.返回受影響的行數(shù)(1表示插入,2表示更新)

使用 REPLACE INTO

REPLACE INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);

特點:

1.如果記錄已存在,先刪除舊記錄再插入新記錄

2.會觸發(fā) DELETE 和 INSERT 兩個操作

3.自增ID會改變(不推薦需要保持ID不變的場景)

使用 NOT EXISTS 子查詢

INSERT INTO table_name (column1, column2, ...)
SELECT value1, value2, ...
FROM dual
WHERE NOT EXISTS (
    SELECT 1 FROM table_name 
    WHERE unique_column = unique_value
);

特點:

1.更靈活的判斷條件

2.可以基于非唯一鍵判斷

3.語法稍復(fù)雜

示例對比

假設(shè)有一個用戶表 users,主鍵為 id,username 有唯一約束:

-- 方法1: INSERT IGNORE
INSERT IGNORE INTO users (username, email) VALUES ('john', 'john@example.com');

-- 方法2: ON DUPLICATE KEY UPDATE
INSERT INTO users (username, email) VALUES ('john', 'john@example.com')
ON DUPLICATE KEY UPDATE email = VALUES(email);

-- 方法3: REPLACE INTO
REPLACE INTO users (username, email) VALUES ('john', 'john@example.com');

-- 方法4: NOT EXISTS
INSERT INTO users (username, email)
SELECT 'john', 'john@example.com'
FROM dual
WHERE NOT EXISTS (
    SELECT 1 FROM users WHERE username = 'john'
);

實踐建議

  • 如果只是避免重復(fù)插入,使用 INSERT IGNORE
  • 如果需要更新已有記錄,使用 ON DUPLICATE KEY UPDATE
  • 除非特殊需求,避免使用 REPLACE INTO(因為它會先刪除記錄)
  • 復(fù)雜條件判斷時使用 NOT EXISTS 方法 注意:這些方法都依賴于表上的主鍵或唯一約束才能正常工作。

總結(jié) 

到此這篇關(guān)于MySQL INSERT語句實現(xiàn)當(dāng)記錄不存在時插入的幾種方法的文章就介紹到這了,更多相關(guān)MySQL INSERT當(dāng)記錄不存在時插入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • MySQL索引下推詳細

    MySQL索引下推詳細

    這篇文章主要介紹MySQL索引下推,索引下推(ICP)是針對MySQL使用索引從表中檢索數(shù)據(jù)行的情況的優(yōu)化。下面就來介紹相關(guān)資料,需要的朋友可以參考一下
    2021-10-10
  • Windows系統(tǒng)下mysql5.7.21安裝詳細教程

    Windows系統(tǒng)下mysql5.7.21安裝詳細教程

    這篇文章主要為大家詳細介紹了Windows系統(tǒng)下mysql5.7.21安裝詳細教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • 解決MySQL錯誤碼:1054 Unknown column ‘**‘ in ‘field list‘的問題

    解決MySQL錯誤碼:1054 Unknown column ‘**‘ in&n

    這篇文章主要介紹了解決MySQL錯誤碼:1054 Unknown column ‘**‘ in ‘field list‘的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • MySQL中的游標(biāo)和綁定變量

    MySQL中的游標(biāo)和綁定變量

    這篇文章主要介紹了MySQL中的游標(biāo)和綁定變量方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • mysql自動停止 Plugin FEDERATED is disabled 的完美解決方法

    mysql自動停止 Plugin FEDERATED is disabled 的完美解決方法

    今天在配置服務(wù)器的時候,發(fā)現(xiàn)mysql的一個錯誤提示在 本地計算機 無法啟動 MySQL 服務(wù)。錯誤 1067: 進程意外終止,其實原因很多這個不是導(dǎo)致進程意外終止的最終原因,但可以解決
    2016-04-04
  • mysql 查詢表中平均分最低的班級

    mysql 查詢表中平均分最低的班級

    查詢出dd(user_id,class_no,score)這個表中平均分最低的班級?
    2009-07-07
  • 運維角度淺談MySQL數(shù)據(jù)庫優(yōu)化(李振良)

    運維角度淺談MySQL數(shù)據(jù)庫優(yōu)化(李振良)

    一個成熟的數(shù)據(jù)庫架構(gòu)并不是一開始設(shè)計就具備高可用、高伸縮等特性的,它是隨著用戶量的增加,基礎(chǔ)架構(gòu)才逐漸完善。這篇博文主要談MySQL數(shù)據(jù)庫發(fā)展周期中所面臨的問題及優(yōu)化方案
    2015-07-07
  • mysql中inner join和left join使用詳解

    mysql中inner join和left join使用詳解

    本文主要介紹了mysql中inner join和left join使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Mysql視圖和觸發(fā)器使用過程

    Mysql視圖和觸發(fā)器使用過程

    這篇文章主要介紹了MySql視圖與觸發(fā)器使用過程,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2022-12-12
  • mysql 8.0.18 安裝配置優(yōu)化教程

    mysql 8.0.18 安裝配置優(yōu)化教程

    這篇文章主要為大家詳細介紹了mysql 8.0.18 安裝配置優(yōu)化教程,文中安裝步驟介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評論