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

Ano*_*us1 5 php mysql sql

我有一个表字段foreign_key_id | value1 | value2,如果我匹配foreign_key_id和value1,我想更新value2.

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

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

p.c*_*ell 8

尝试使用a IF EXISTS来确定是执行UPDATE还是INSERT声明.您可以在一个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;
Run Code Online (Sandbox Code Playgroud)