MySQL-在where语句中使用时出现语法错误(insert into)

MySQL-在where语句中使用时出现语法错误(insert into),mysql,insert-into,Mysql,Insert Into,我试图在mysql中构建一个带有一些条件的“insert if”机制 我构建它所遵循的主题是: 整个代码是: insert into qualityScore (adGroupID, keywordID, qualityScore, day, clientID) select 222, 212, 6, '2016-07-23', 5 where ( select qualityScore from qualityScore where adGroupID=222 and keywordID =

我试图在mysql中构建一个带有一些条件的“insert if”机制

我构建它所遵循的主题是:

整个代码是:

insert into qualityScore (adGroupID, keywordID, qualityScore, day, clientID) 
select 222, 212, 6, '2016-07-23', 5
where ( select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23' ) <> 5
这是一个预期的结果。但当我将“5”部分添加到代码中时,问题就出现了:

(select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23') <> 5
它返回一个MySQL 1064语法错误代码。 据我所知,语法似乎是正确的,我找不到导致这个问题的原因

如有任何建议,将不胜感激。谢谢。

试试第二天<2016-07-23

开始和结束时都需要日期

如果没有FROM子句,就不能有WHERE子句。如果只是在没有表的情况下选择文本,请使用dummy table DUAL


a您在选择222、212、6、'2016-07-23',5之后以及在何处之前缺少a,这是您的错误1064。b当/如果您的内部select返回的行数超过1行时,您将得到进一步的错误。不清楚您希望通过此内部查询实现什么,如果您确定它始终只有一行,则将是fine@Solarflare嘿,谢谢你的解释。无论是否存在“发件人”,整个查询都在运行。实际上不工作,但没有给出错误。但正如我所说,问题在于内在的质疑。它返回5,但不会将此结果与“5”部分进行比较。为便于将来参考,请始终提及整个错误消息。关于使用near的正确语法的部分。。。引号中的某些内容可能对您没有帮助,但它实际上提供了有关解析器在何处遇到上下文无效的内容的有价值的信息,通常意味着错误就在错误中的引号字符串之前(如果不是在),或者消息将以接近空字符串结束,这意味着整个查询已被解析,但不完整,因为没有更多的令牌,解析器认为这是错误的。它现在可以很好地使用语法。我试过使用不同的日期输入。这一定是在讨论不同的DBMS。MySQL不用于此。我想我以前在表名中做了一些错误的事情。现在一切都很好,非常感谢您的演示,我非常感谢您的帮助。
       QualityScore
       ------------
       5
(select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23') <> 5
insert into qualityScore (adGroupID, keywordID, qualityScore, day, clientID) 
select 222, 212, 6, '2016-07-23', 5
from DUAL
where ( select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23' ) <> 5