簡體   English   中英

如果不存在多行,則插入,如果有則更新

[英]Insert if multiple rows don't exist, update if they do

我有一張看起來與此相似的桌子......

+-------------+-------------+
| Field       | Type        |
+-------------+-------------+
| var1        | varchar(15) |
| var2        | varchar(25) |
| var3        | int(1)      |
+-------------+-------------+

問題是我需要能夠插入3個變量,但前提是var1和var2不在表中。 如果var1和var2已經在表中,則應更新var3。

所以舉個例子

INSERT INTO table (var1, var2, var3) VALUES('0','1','2')

會插入3個值,但是

INSERT INTO table (var1, var2, var3) VALUES('0','1','1')

將('0','1','2')更新為('0','1','1')

重要的是,如果存在var1和var2,則不會輸入具有不同var3的重復條目。

我看了幾個其他的問題,但大多數人似乎都推薦IGNORE,我認為這對我不起作用,因為我正在檢查多個副本。

首先,將(var1,var2)為組合的PRIMARY KEY

ALTER TABLE table ADD PRIMARY KEY(var1,var2)

然后使用INSERT ON DUPLICATE UPDATE

INSERT INTO table (var1, var2, var3) VALUES ('0','1','2') ON DUPLICATE KEY UPDATE var3 = '2'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM