不能在WHERE子句中使用MySQL extract()函数

时间:2010-06-05 07:25:00

标签: mysql sql sql-update

我运行了以下查询:

    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()功能,则可以解决此问题。但是,我非常不愿意这样做,并希望避免它。我怎样才能让它发挥作用?`

1 个答案:

答案 0 :(得分:1)

正如原始问题中所讨论的,您收到此错误的原因是CASE表达式缺少其END