MySQL - 在 where 语句中使用 <> 时出现语法错误(插入)
MySQL - Syntax error when using <> in a where statement (insert into)
我试图在某些条件下在 mysql 中构建一个 'insert if' 机制。
我构建它所遵循的主题:MySQL INSERT IF (custom if statements)
整个代码是:
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
但是下面的有点麻烦:
(select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23')
当我单独执行这一段时,它 returns 类似的东西:
QualityScore
------------
5
这是预期的结果。但是当我添加到代码中时,问题就存在了'<> 5'部分:
(select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23') <> 5
它returns一个MySQL 1064语法错误代码。
据我所知,语法似乎是正确的,我找不到导致这个问题的原因。
如有任何建议,我们将不胜感激。谢谢。
尝试day < #2016-07-23#
日期的开头和结尾需要#。
没有 FROM
子句就不能有 WHERE
子句。如果您只是选择没有 table 的文字,请使用虚拟 table DUAL
.
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
我试图在某些条件下在 mysql 中构建一个 'insert if' 机制。
我构建它所遵循的主题:MySQL INSERT IF (custom if statements)
整个代码是:
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
但是下面的有点麻烦:
(select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23')
当我单独执行这一段时,它 returns 类似的东西:
QualityScore
------------
5
这是预期的结果。但是当我添加到代码中时,问题就存在了'<> 5'部分:
(select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23') <> 5
它returns一个MySQL 1064语法错误代码。 据我所知,语法似乎是正确的,我找不到导致这个问题的原因。
如有任何建议,我们将不胜感激。谢谢。
尝试day < #2016-07-23#
日期的开头和结尾需要#。
没有 FROM
子句就不能有 WHERE
子句。如果您只是选择没有 table 的文字,请使用虚拟 table DUAL
.
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