我有一张看起来与此类似的表......
+-------------+-------------+
| 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,我认为这对我不起作用,因为我正在检查多个重复项。
答案 0 :(得分:3)
首先,将(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'