Не могу использовать функцию MySQL extract () в предложении WHERE - PullRequest
0 голосов
/ 05 июня 2010

Я запустил следующий запрос:

    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 Ответ

1 голос
/ 05 июня 2010

Как обсуждалось в исходном вопросе, причина того, что вы получаете эту ошибку, состоит в том, что в выражении CASE отсутствует END.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...