小编典典

MySQL-更新(如果存在),否则插入两个键

sql

我有一个字段为Foreign_key_id的表| value1 |
value2,如果我有对Foreign_key_id和value1的匹配项,我想更新value2。

如果foreign_key_id或value1不存在,我想插入一个新行。有没有比PHP使用select语句然后分支到更新或插入更好的方法呢?

编辑:value2可以与数据库中的值相同,因此我无法运行和更新,请查看受影响的行是否为0,如果是,请运行并插入。


阅读 208

收藏
2021-03-23

共1个答案

小编典典

尝试使用IF EXISTS确定是否执行UPDATEINSERT语句。您可以在一个PHP语句/查询中执行此操作。

IF EXISTS(SELECT 1 FROM Mytable WHERE foreign_key_id = f1 AND value1 = v1)
BEGIN
    UPDATE Mytable SET value2 = v2
    WHERE foreign_key_id = f1 AND value1 = v1;
END
ELSE
BEGIN
      INSERT INTO Mytable(foreign_key_id,value1,value2)
      VALUES (f1,v1,v2);
END IF;
2021-03-23