1. 程式人生 > >MySQL新增資料,存在就更新,不存在就新增

MySQL新增資料,存在就更新,不存在就新增

1、插入一條資料,存在則不操作,不存在就插入(必須現有唯一鍵)
使用insert ignore語句:

insert ignore into table(col1,col2) values ('a','b');

例如插入資料:

insert ignore into user_info (last_name,first_name) values ('LeBron','James');

這樣一來,如果表中已經存在last_name='LeBron'且first_name='James'的資料,就不會插入,如果沒有就會插入一條新資料。
上面的是一種用法,也可以用 INSERT .... SELECT 來實現,這裡就不舉例了。

2、插入一條資料,存在就更新,不存在就插入(必須現有唯一鍵)
這種有兩種操作方法:
a、INSERT...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; 

如果行作為新記錄被插入,則受影響行的值為1;如果原有的記錄被更新,則受影響行的值為2。 
b、REPLACE關鍵字的使用         
使用REPLACE的最大好處就是可以將DELETE和INSERT合二為一,形成一個原子操作。這樣就可以不必考慮在同時使用DELETE和INSERT時新增事務等複雜操作了。
在使用REPLACE時,表中必須有唯一索引,而且這個索引所在的欄位不能允許空值,否則REPLACE就和INSERT完全一樣的。
在執行REPLACE後,系統返回了所影響的行數,如果返回1,說明沒有重複的記錄,如果返回2,說明有重複記錄,系統先DELETE這條記錄,然後再INSERT這條記錄。
語法和INSERT非常的相似,如下面的REPLACE語句是插入或更新一條記錄。     

REPLACE INTO users (id,name,age) VALUES(123, '賈斯丁比伯', 22); 

相關推薦

MySQL新增資料存在更新存在新增

1、插入一條資料,存在則不操作,不存在就插入(必須現有唯一鍵) 使用insert ignore語句: insert ignore into table(col1,col2) values ('a','b'); 例如插入資料: insert ignore into use

mybatis+oracle新增資料時如果資料存在更新如果存在插入

判斷需要插入的資料是否存在,如果不存在就更新 <insert id="saveBatch" parameterType="java.util.List" >   MERGE INTO 表名 T   USING (  <foreach collection=

mysql資料更新資料插入

原文連結:sql插入資料已經存在,則執行update更新-mysql教程-資料庫-壹聚教程網 http://www.111cn.net/database/mysql/76509.htm 在很多專案中,我們需要對資料進行不斷的呼叫和更新,如果有新的資料過來,還要把它加入到

MySql 存在記錄更新存在新增

1、插入一條資料,存在就更新,不存在就更新(必須現有唯一鍵)  使用insert ignore語句:insert ignore into table(col1,col2) values ('a','b');        例如插入資料:insert ignore i

oracle mybatis(Mergr into語句帶序列)新增資料時如果資料存在更新如果存在插入

merge語法根據源表(也可是臨時生成的表)對目標表進行查詢匹配,匹配成功時執行更新操作,不成功時執行插入操作。1.基本語法:merge into 目標表 Tusing 源表 T1on (T.xx1 = T1.xx1 and T.xx2=T1.xx2/*匹配條件*/)when

MySQL新增數據存在更新存在添加

字段 執行 where into 插入 重復記錄 update 兩個 spa 1、插入一條數據,存在就更新,不存在就更新(必須現有唯一鍵)使用insert ignore語句: insert ignore into table(col1,col2) values (‘a

mybatis 批量插入oracle 如果表裡存在更新 存在插入資料

判斷需要插入的資料是否存在,如果不存在就更新 <insert id="saveBatch" parameterType="java.util.List" >   MERGE INTO 表名 T   USING (  <foreach collection=

MySQL中大資料表增加欄位增加索引實現

最近遇到的一個問題,需要在一張1800萬資料量的表中新增加一個欄位並新增索引,但是直接新增會導致mysql崩潰或者鎖表時間太長影響使用者操作,所以需要利用其他的方法進行新增,這篇文章主要給大家介紹了MySQL中大資料表增加欄位,增加索引的實現過程,需要的朋友可以參考借鑑。

mysql ON DUPLICATE KEY UPDATE有則更新無則插入

1、適合用在需要 判斷記錄是否存在,不存在則插入存在則更新的場景  a 為 主鍵 或 擁有UNIQUE索引 INSERT INTO TABLE (a,c) VALUES (1,3),(1,8) ON DUPLICATE KEY UPDATE c=c+1;----c=4 INSE

資料面試題(每天更新4月2已更新完畢)

面試題圖片較大,載入需要時間,請耐心等待.......1.在Hadoop中定義的主要公用InputFormat中,預設是哪一個?(A)A、 TextInputFormatB、 KeyValueInputFormatC、 SequenceFileInputFormat2. 下面哪個程式負責 HDFS 資料儲存?

MERGE--一個語句實現存在更新存在插入

使用MERGE語句從一個表中的選擇的行更新或插入到另一個表。是否更新或插入到目標表中的決定是基於在ON子句中的條件。它可以讓你避免多個INSERT和UPDATE DML語句。語法為: MERGE INTO table USING data_source ON (condition) WHEN MATCHED

Java資源免費分享每日一更新找到你心儀的吧

溫馨提示 本欄目會不定期的更新一些優質的學習資源,可以經常的來這裡逛逛,看看有沒有對你有幫助的資源,如果能夠幫助到你,小海同學也就心滿意足。 一、Java基礎學習資源Java基礎:連結: https://pan.baidu.com/s/1c3l8N08 密碼: u8d7Html5: 連結: https:/

利用svn鉤子hooks/post-commit實現程式碼更新自動執行指令碼

1. 在svn伺服器對應的專案中會存在以下幾個目錄和檔案 conf  db  format  hooks  locks  README.txt 其中目錄hooks是放置程式碼提交執行的檔案 進入 hooks目錄新建一個 post-comm

HDU5957 Query on a graph(拓撲找環BFS序線段樹更新分類討論)

傳送門:http://acm.hdu.edu.cn/showproblem.php?pid=5957 題意:D(u,v)是節點u和節點v之間的距離,S(u,v)是一系列滿足D(u,x)<=k的點的集合,操作1:將S(u,k)內節點權值增加或者減小,操作2:查詢S(u,k)內節點的權值和 題解:因為題

The given object has a null identifier做頁面更新id丟失

org.springframework.dao.InvalidDataAccessApiUsageException: The given object has a null identifier: com.chuai.pojo.Role; nested exception is org.h

線段樹大模板(區間更新單點更新查詢區間最值等等)

#include <bits/stdc++.h> #define MAXN 100010 #define inf 0x3f3f3f3f using namespace std; struct node{ int l,r;//區間[l,r

Ios熱更新實時程式碼更新動態更新動態庫framework

動態更新,iOS有三種處理方案 1,開源框架reactive native,但是程式語言是js iOS app可以在執行時從伺服器拉去最新的js檔案到本讀,然後執行,因為js是一門動態的指令碼語言 所以可以在執行時直接讀取js檔案執行,也因此能夠實現iOS的熱更新

【重大更新】IntelliJ IDEA v2017.1釋出功能大量更新先睹為快!|附下載

IntelliJ IDEA v2017.1到來!功能大量更新!本次更新圖文較多,部分功能詳細內容請點選文章末尾連結詳細檢視! Java java9支援(檢視詳情)java8功能改進升級至JUnit 5檢查egexp語法高亮顯示 JVM偵錯程式 Async異常堆疊更新

iOS 熱更新實時程式碼更新動態更新動態庫framework

  允許轉載! demo 下載   只要稽核通過後,無須再次稽核,就可以動態更新,iOS有三種處理方案:    一、開源框架 reactive native,但是程式語言是js   二、lua 指令碼   三、使用oc語言的動態庫framewo

【線段樹】基本寫法區間極值區間延遲更新多延遲標籤

線段樹的特性: 開多大陣列來存線段樹? 線段樹表示的區間長度為k, 則葉節點個數k,線段樹作為一棵 完全二叉樹,它的總節點個數為n=2*k-1。  並且: 線段樹的左右子樹 葉節點個數相差不超過1.  假定線段樹的深度為h。則深度h對應的滿二叉樹節點個數為2^h-1. 下面