我試圖在一些條件下在mysql中構建'insert if'機制。MySQL - 在where語句中使用<>時的語法錯誤(插入到)
,我跟着來構建它的話題: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
這是預期的結果。
(select qualityScore from qualityScore where adGroupID=222 and keywordID = 212 and day < '2016-07-23') <> 5
它返回一個MySQL 1064語法錯誤代碼:但後來當我加入到代碼的「<> 5」部分存在的問題。 據我所知,語法似乎是正確的,我找不到導致此問題的觀點。
任何建議將不勝感激。謝謝。
一)你缺少後''from'選擇222,212,6, '2016年7月23日',5'和the'where'之前,也就是你的錯誤1064. b)當/如果你的內部select返回多於一行(你不清楚你想用這個內部查詢實現什麼,如果你確定它總是隻有一行,那麼它會很好) – Solarflare
@ Solarflare嘿感謝解釋。整個查詢工作是否有'從'。實際上不工作,但沒有給出錯誤。但正如我所說,問題在於內部查詢。它返回5,但不會將此結果與'<> 5'部分進行比較。 – Cem
爲了將來的參考,請始終提及整個錯誤*消息*。關於「在正確語法附近使用...... *引用內容」的部分可能對您看起來並不有用,但它實際上提供了關於解析器在何處遇到上下文無效的有用信息,通常意味着該錯誤在之前是正確的,如果不是,錯誤中帶引號的字符串,或者消息將以'near''結尾(空字符串,這意味着整個查詢被解析,但是不完整,因爲沒有更多的標記,解析器認爲是錯誤)。 –