我运行以下查询:
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的date列。在成功之前,我已经在extract()
上多次使用了reference_table
函数,因此,我知道我的提取函数语法没有问题。但是,在这种情况下,MySQL抱怨。这可能与我在WHERE
子句中使用的事实有关。我知道,如果我将月份和日期列添加到
reference_table
以避免使用extract()
函数,则此问题可以得到解决。但是,我非常不愿意这样做,并希望避免这样做。我如何使它工作? 最佳答案
如原始问题中所述,出现此错误的原因是CASE
表达式缺少其END
。
关于mysql - 无法在WHERE子句中使用MySQL extract()函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2979541/