【发布时间】:2020-01-24 01:04:49
【问题描述】:
我有这个愚蠢的问题,MySQL 服务器有这个命令的问题:
INSERT INTO ingridients (title,text)
VALUES(?,`MISSING INFO`)
WHERE NOT EXISTS
(SELECT id FROM ingridients WHERE title=?);
我收到以下错误:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE NOT EXISTS (SELECT id FROM ingridients WHERE title=?)' at line 1
我并没有经常使用 SQL,所以我找不到解决此问题的方法。有人可以帮忙吗?
【问题讨论】:
-
INSERT 通常不支持 WHERE 子句(尽管 MySQL 无论如何都不是典型的)。您是否尝试过检查与您的 MySQL 版本相对应的手册以查看它是否确实有效?您没有提供有关您使用的 MySQL 版本的信息,因此我无法提供特定链接,但您最喜欢的搜索引擎将能够使用 MySQL 文档 作为搜索短语。
-
如果你使用
WHERE title=?,你不应该改用UPDATE吗? -
@tcadidot0:
WHERE NOT EXISTS,意味着UPDATE不适用。你不能UPDATE一个不存在的行。 -
看来我使用的是 8.0 版并浏览了 INSERT 的参考手册我似乎找不到它后面跟着 WHERE 子句,所以我猜你是对的应该工作。这让我再次遇到插入记录的问题,前提是它不存在。
-
嗯,这有点奇怪。如果是这样,这意味着仅通过从插入中排除
id将INSERT分成两列值。这意味着值将是;假设表有id, title, text列,插入将是NULL,?,'MISSING INFO'多少行?