我运行了以下查询:
UPDATE main_table, reference_table
SET main_table.calc_column =
(CASE WHEN main_table.incr = "6AM"
THEN reference_table.col1+reference_table.col2+...
WHEN main_table.incr = "12AM"
THEN reference_table.col7+reference_table.col8+...
WHEN main_table.incr = "6PM"
THEN reference_table.col13+reference_table.col14+...
ELSE reference_table.col19+reference_table.col20+...)
WHERE main_table.month = extract(month from reference_table.thedate)
AND main_table.day = extract(day from reference_table.thedate)
我使用了extract()
函数,因为我的reference_table没有月份和日期列,但是日期列名为thedate。我成功地在extract()
上多次使用reference_table
函数,所以,我知道我的提取函数语法没有任何问题。但是,在这种情况下,MySQL抱怨。这可能与我在WHERE
子句中使用的事实有关。
我知道如果我将月份和日期列添加到reference_table
以避免使用extract()
功能,则可以解决此问题。但是,我非常不愿意这样做,并希望避免它。我怎样才能让它发挥作用?`
答案 0 :(得分:1)
正如原始问题中所讨论的,您收到此错误的原因是CASE
表达式缺少其END
。