我试图编写一个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/