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? `
Quelle est l'erreur exacte que vous obtenez? Un EXTRAIT fonctionne très bien dans une clause WHERE pour moi. – bernie
Quel type de données est la colonne? –
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