2010-06-05 8 views
0

J'ai couru la requête suivante:Impossible d'utiliser la fonction extract() MySQL dans la clause WHERE

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) 

Je l'ai utilisé extract() fonction depuis mon reference_table n'a pas mois et colonnes jour, mais a la colonne de date nommée thedate. J'ai utilisé la fonction extract() sur le reference_table plusieurs fois avant de réussir, donc, je sais qu'il n'y a rien de mal avec ma syntaxe de la fonction d'extraction. Cependant, dans ce cas, MySQL se plaint. Cela a probablement à voir avec le fait que j'ai utilisé la clause WHERE.

Je sais que ce problème pourrait être résolu si j'ai ajouté les colonnes mois et jour au reference_table pour éviter d'utiliser la fonction extract(). Cependant, je suis très réticent à le faire et je voudrais l'éviter. Comment puis-je le faire fonctionner? `

+0

Quelle est l'erreur exacte que vous obtenez? Un EXTRAIT fonctionne très bien dans une clause WHERE pour moi. – bernie

+0

Quel type de données est la colonne? –

+0

L'erreur que j'obtiens est la suivante: Erreur 1064 (42000): Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe près de ') où tb.month_number = extrait (mois de Electrical_Usage.thedate) et tb.th – UkraineTrain

Répondre

1

Comme indiqué dans la question d'origine, la raison pour laquelle vous obtenez cette erreur est que l'expression CASE manque END.

+0

Grâce à vous, je l'ai déjà réparé. J'apprécie vraiment votre aide. Je n'aurais pas pu le faire sans toi. – UkraineTrain