我运行以下查询:

    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/

10-12 05:36