我试图编写一个SQL查询,将在“ rName”列中的“ persons”表中检入一个名称“ jack”,如果存在,则更新该行,否则用新的rName插入新行。

我一直在尝试IF / ELSE语句,但尚未真正了解它们的工作原理。
还是如果没有If / ELSE,有没有更好的方法来做我想做的事情? (我并没有做太多的SQL工作,我以前只做UPDATE,INSERT,DELETE,ALTER等工作。

到目前为止,我已经知道了:(如果在rName行中找到jack,则对其进行更新,否则请插入新行)

SELECT * FROM persons IF 'jack' == rName BEGIN [UPDATE Statement] END ELSE BEGIN [ INSERT Statement] END


编辑:我认为我没有完全解释我想要的东西,
rName应该都是唯一的名称,否2应该相同。我尝试了ON DUPLICATE KEY UPDATE,但似乎只是在新行中插入了新数据。但是我希望它用新数据更新已经存在的rName(jack)行,rName(jack)应该保持不变,但是该行中的其他字段应该更新为提供的新数据。

最佳答案

在您的情况下:

INSERT INTO persons(`rName`, `foo`) VALUES('jack', 'bar') ON DUPLICATE KEY UPDATE `foo` = VALUES(`bar`);


rName必须具有唯一的密钥才能起作用。如果表中有一个“ jack”,那么它将用“ bar”更新字段“ foo”,如果没有“ jack”,则将插入一个新行,并带有rName ='jack'和foo = '酒吧'。

关于php - 如果在SQL中找到输入名称,则执行其他操作…使用SQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1826345/

10-09 00:55