我正在尝试执行以下sql查询:
INSERT INTO api(site,key) VALUES ('example.com','a-random-key') WHERE NOT EXISTS (SELECT * FROM api WHERE site='example.com');
为了在该站点上没有站点时插入一个新行并包含一个对应的密钥(例如,如果没有其他站点,则插入带有相关密钥“ a-random-key”的“ example.com”)使用网站“ example.com”进行记录)。
我收到以下错误:
#
1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“不存在(SELECT * FROM api WHERE site ='example.com')”附近使用
我试图分别执行两个查询,并且它们都可以工作。
如何使查询工作?
我认为您想尝试这样的事情:
INSERT INTO api (site, `key`)
SELECT 'example.com','a-random-key'
FROM dual
WHERE NOT EXISTS (SELECT * FROM api WHERE site='example.com');
我认为没有选择就不能WHERE NOT EXISTS
在INSERT
查询中使用。请在此处查看SQL Fiddle演示。另外,SELECT
如果您不使用,上述声明将不起作用FROM dual
。
更新第二个问题是该列key
应该被反引号包围...我认为MySQL对此感到窒息,因为它是一个保留字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句