Mysql 插入一條資料,存在就更新,不存在就插入
阿新 • • 發佈:2020-12-12
官方的解釋是使用:INSERT ... ON DUPLICATE KEY UPDATE語句
例子:
INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE t1 SET c=c+1 WHERE a=1;
沒試過這種方式
2、REPLACE
REPLACE INTO user (id,open_id,nick_name,gender) VALUES(456,"789456","張", 0);
使用該語句之後發現他刪掉了我其他的資料,很疑惑,檢視文件後發現:REPLACE INTO 如果存在 primary 或 unique 相同的記錄,則先刪除掉。再插入新記錄
示例:
這是我的資料結構:id為主鍵,open_id有唯一約束
我想要使用REPLACE來修改或新增一條資料,執行語句:REPLACE INTO user (id,open_id,nick_name,gender) VALUES(123,"a","張 - 哈哈", 0); 這條資料是存在的,所以它會把nick_name改為 張 - 哈哈
我們可以看到結果已經改變了,並且資料庫提示:Affected rows: 2,下面是改變後效果圖
上圖是正常的實現,下面來演示primary 或unique相同會出現的情況,我修改並執行以下sql語句
REPLACE INTO user (id,open_id,nick_name,gender) VALUES(1234,"a","張 - 哈哈", 0);
資料庫提示:Affected rows: 3
再檢視資料,我們發現id為123那條資料不見了,取而代之的是這條id為1234的資料
通過以上例項,正確的解釋了:REPLACE INTO 如果存在 primary 或 unique 相同的記錄,則先刪除掉。再插入新記錄
以此記錄