如果存在,则更新行的最佳实践

vbopmzt1  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(373)

这个问题在这里已经有答案了

插入mysql表或更新(如果存在)(11个答案)
两年前关门了。
我想知道更新表中行的更有效的方法,如果行不存在,就必须插入行。
我的问题是

UPDATE MyGuests SET lastname='Doe' WHERE id=2

当运行此查询并且没有id=2的行时,必须插入一行,如下所示

INSERT INTO MyGuests (lastname, id)
VALUES ('Doe', 2)

注:
我的主要目的是更新行
我不希望在更新行时更改主键。

e3bfsja2

e3bfsja21#

假设 id 是您的主键/唯一键,您可以使用 INSERT..ON DUPLICATE KEY UPDATE :

INSERT INTO MyGuests (id, lastname) VALUES (2, 'Doe')
  ON DUPLICATE KEY UPDATE lastname = 'Doe'
j5fpnvbx

j5fpnvbx2#

您可以这样参考:

UPDATE MyGuests SET lastname='Doe' WHERE id=2
IF ROW_COUNT()=0
    INSERT INTO MyGuests (lastname, id) VALUES ('Doe',2)

相关问题