2009-10-17 10 views
0

J'ai décidé dans ma table que je ne veux plus enregistrer les heures de début et de fin, mais seulement une heure de début et une durée en minutes. Comment puis-je mettre à jour ma table afin que ma nouvelle colonne ait ses valeurs insérées en fonction des données existantes? ma tentative donne ci-dessous l'erreur:mise à jour de sous-requête corrélée

You can't specify target table 'lesson' for update in FROM clause

UPDATE lesson 
SET duration = 
    (SELECT TIME_TO_SEC(TIMEDIFF(finish_time,start_time))/60 
    FROM lesson AS l 
    WHERE l.id = lesson.id) 

Répondre

4

Vous ne devez pas le faire parce que votre mise à jour d'une colonne avec des valeurs d'autres colonnes de la même ligne, il suffit de:

UPDATE lesson 
SET duration = TIME_TO_SEC(TIMEDIFF(finish_time,start_time))/60 
+0

D'oh - semble si évident maintenant! – Robert