国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySql避免重復插入記錄的幾種方法

2024-07-24 12:48:03
字體:
來源:轉載
供稿:網友

方案一:使用ignore關鍵字

如果是用主鍵primary或者唯一索引unique區分了記錄的唯一性,避免重復插入記錄可以使用:

復制代碼 代碼如下:

 INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.com', '99999', '9999');
 

這樣當有重復記錄就會忽略,執行后返回數字0

還有個應用就是復制表,避免重復記錄:

復制代碼 代碼如下:

 INSERT IGNORE INTO `table_1` (`name`) SELECT `name` FROM `table_2`;
 

方案二:使用Replace

語法格式:

復制代碼 代碼如下:

REPLACE INTO `table_name`(`col_name`, ...) VALUES (...);
REPLACE INTO `table_name` (`col_name`, ...) SELECT ...;
REPLACE INTO `table_name` SET `col_name`='value',

...算法說明:
REPLACE的運行與INSERT很相像,但是如果舊記錄與新記錄有相同的值,則在新記錄被插入之前,舊記錄被刪除,即:

嘗試把新行插入到表中
當因為對于主鍵或唯一關鍵字出現重復關鍵字錯誤而造成插入失敗時:
從表中刪除含有重復關鍵字值的沖突行
再次嘗試把新行插入到表中
舊記錄與新記錄有相同的值的判斷標準就是:
表有一個PRIMARY KEY或UNIQUE索引,否則,使用一個REPLACE語句沒有意義。該語句會與INSERT相同,因為沒有索引被用于確定是否新行復制了其它的行。

返回值:
REPLACE語句會返回一個數,來指示受影響的行的數目。該數是被刪除和被插入的行數的和
受影響的行數可以容易地確定是否REPLACE只添加了一行,或者是否REPLACE也替換了其它行:檢查該數是否為1(添加)或更大(替換)。

示例:
# eg:(phone字段為唯一索引)

復制代碼 代碼如下:

REPLACE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test569', '99999', '123');

另外,在 SQL Server 中可以這樣處理:

復制代碼 代碼如下:

if not exists (select phone from t where phone= '1')   insert into t(phone, update_time) values('1', getdate()) else    update t set update_time = getdate() where phone= '1'

更多信息請看:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#replace

方案三:ON DUPLICATE KEY UPDATE

如‍上所寫,你也可以在INSERT INTO…..后面加上 ON DUPLICATE KEY UPDATE方法來實現。如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后會導致在一個UNIQUE索引或PRIMARY KEY中出現重復值,則執行舊行UPDATE。

例如,如果列a被定義為UNIQUE,并且包含值1,則以下兩個語句具有相同的效果:

復制代碼 代碼如下:

INSERT INTO `table` (`a`, `b`, `c`) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE `c`=`c`+1;
UPDATE `table` SET `c`=`c`+1 WHERE `a`=1;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪洞县| 资源县| 峨山| 兴文县| 平果县| 土默特左旗| 布拖县| 博爱县| 平远县| 温泉县| 紫阳县| 潞西市| 漳浦县| 兖州市| 城市| 玉溪市| 西和县| 合江县| 雅安市| 太仆寺旗| 陵水| 郧西县| 哈巴河县| 恩施市| 台南县| 济源市| 西藏| 沧源| 加查县| 抚州市| 新沂市| 巨野县| 开封市| 武强县| 华坪县| 内丘县| 巴林左旗| 政和县| 即墨市| 潮州市| 钦州市|