2010-03-15 8 views
0

Comment écrire la requête pour mettre à jour la table videos, et régler la valeur du champ name à « quelque chose » où le average est max(), ou mettre à jour la table, où average a la deuxième valeur par Taille!!!mise à jour table myqsl

Je pense que la requête doit ressembler à ceci !!!

UPDATE videos 
    SET name = 'something' 
WHERE average IN (SELECT `average` 
        FROM `videos` 
       ORDER BY `average` DESC 
        LIMIT 1) 

mais ça ne marche pas !!!

+0

Exact duplicate: http://stackoverflow.com/questions/2450587/mysql-update-where-some-field-is-max –

Répondre

0

deux choses causent des problèmes avec ma version de MySQL (5.0.84) 1. A l'aide limite pas pris en charge dans le sous-requête 2. Utilisation de la table pour la mise à jour (vidéos) dans la sous-requête

je peux » Je pense à un bon moyen de contourner ces problèmes. Je suggère de tirer les identifiants des lignes que vous voulez mettre à jour dans votre code, puis d'exécuter la mise à jour dans une deuxième déclaration. Si vous utilisez sql pur et que vous le faites à la main, vous pouvez toujours sélectionner une table temporaire, puis la mettre à jour en fonction des identifiants que vous y insérez.

0
UPDATE videos 
    SET name = 'something' 
WHERE videos.id IN (SELECT id 
        FROM `videos` 
       ORDER BY `average` DESC 
        LIMIT 1) 
Questions connexes