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

时间:2013-01-03 00:45:35

标签: php mysql insert sql-update

我有一张看起来与此类似的表......

+-------------+-------------+
| 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,我认为这对我不起作用,因为我正在检查多个重复项。

1 个答案:

答案 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'