いくつかの条件でmysqlの 'insert if'メカニズムを構築しようとしていました。MySQL - whereステートメントで<>を使用するときの構文エラー(insert into)
私はそれを構築するために、その後のトピック: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')
私はこの作品を単独で実行すると、そのようなものが返されます:
QualityScore
------------
5
これは期待した結果です。しかし、私は「<> 5」部分をコードに追加する場合、問題が存在する:
(select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23') <> 5
これは、MySQLの1064構文エラーコードを返します。 私が知る限り、構文は正しいと思われ、私はこの問題につながる点を見つけることができません。
ご意見をお寄せください。ありがとう。
A)あなたは、 '222、212、6、 '2016年7月23日' を選択した後' from'が欠落している5'とthe'where'前に、それはあなたのエラーですb)インナーセレクトが1行以上を返す場合に、さらにエラーが発生します(この内側のクエリーで何を達成したいのか不明ですが、常に1行だけであれば問題ありません) – Solarflare
@ Solarflareちょっと説明してくれてありがとう。 'from'かどうかにかかわらず、クエリ全体が動作しています。実際には動作しませんが、エラーは出ません。しかし、私が言ったように、問題は内側のクエリです。 5を返しますが、この結果を '<> 5'部分と比較しません。 – Cem
今後の参考として、常にエラー*メッセージ*を記述してください。 「正しい構文を近いものに使う*」というものはあなたには役に立たないかもしれませんが、パーサが文脈上無効なものに遭遇した場所に関する貴重な情報を実際に提供します。エラーで引用符で囲まれた文字列でなければ、メッセージは 'near '''で終わります(空文字列。これは、クエリ全体が解析されたが、トークンがそれ以上存在しないためパーサは信じられない違う)。 –