这个问题在这里已经有答案了:
插入mysql表或更新(如果存在)(11个答案)两年前关门了。我想知道更新表中行的更有效的方法,如果行不存在,就必须插入行。我的问题是
UPDATE MyGuests SET lastname='Doe' WHERE id=2
当运行此查询并且没有id=2的行时,必须插入一行,如下所示
INSERT INTO MyGuests (lastname, id) VALUES ('Doe', 2)
注:我的主要目的是更新行我不希望在更新行时更改主键。
e3bfsja21#
假设 id 是您的主键/唯一键,您可以使用 INSERT..ON DUPLICATE KEY UPDATE :
id
INSERT..ON DUPLICATE KEY UPDATE
INSERT INTO MyGuests (id, lastname) VALUES (2, 'Doe') ON DUPLICATE KEY UPDATE lastname = 'Doe'
j5fpnvbx2#
您可以这样参考:
UPDATE MyGuests SET lastname='Doe' WHERE id=2 IF ROW_COUNT()=0 INSERT INTO MyGuests (lastname, id) VALUES ('Doe',2)
2条答案
按热度按时间e3bfsja21#
假设
id
是您的主键/唯一键,您可以使用INSERT..ON DUPLICATE KEY UPDATE
:j5fpnvbx2#
您可以这样参考: