Comment utiliser l'instruction Update in Case avec des colonnes comme alias
P粉214089349
2023-09-05 17:54:59
<p>J'ai une table appelée sales_data avec 3 colonnes (id int, udf varchar(20), date_of_sale datetime).
J'essaie de trouver le jour de la semaine de la colonne date_of_sale en ajustant l'heure à 6 heures, je dois maintenant mettre à jour la colonne udf avec le jour de la semaine correspondant à date_of_sale. J'ai une idée pour une requête de sélection, mais comment mettre à jour la colonne udf ? </p>
<pre class="brush:php;toolbar:false;">sélectionnez le jour de la semaine (subtime(s.date_of_sale,'6:0:0')) comme putdata,
CAS
WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=0 THEN 'Dimanche'
WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=1 THEN 'Lundi'
WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=2 THEN 'Mardi'
WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=3 THEN 'mercredi'
WHEN weekday(subtime(s.date_of_sale ,'6:0:0'))=4 THEN 'Jeudi'
QUAND jour de la semaine(subtime(s.date_of_sale ,'6:0:0'))=5 THEN 'vendredi'
QUAND jour de la semaine(subtime(s.date_of_sale ,'6:0:0'))=6 THEN 'Samedi'
FIN en tant qu'udf
à partir de sales_data s;</pre></p>
Ajoutez des colonnes générées (https://dev.mysql.com/doc/refman/8.0/en/create-table-generated-columns.html) pour simplifier le traitement et éviter les incohérences des données :
Voir la démo : https://dbfiddle.uk/2d5iIvBv
(Je n'ai pas les mêmes jours de semaine, c'est peut-être la région ?)
Votre requête ci-dessus est presque terminée. Il vous suffit d'ajouter des instructions de mise à jour.
La requête ci-dessous devrait fonctionner pour vous.