[SQL] LIMIT avec UPDATE
Résolu/Fermé
Geromini
Messages postés
36
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
26 août 2007
-
2 avril 2007 à 09:58
M3uH - 16 juil. 2008 à 15:12
M3uH - 16 juil. 2008 à 15:12
A voir également:
- Update limit
- Windows update 0x80070643 - Accueil - Windows
- Windows update bloqué - Guide
- Asus live update - Télécharger - Utilitaires
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Citroën update - Forum Téléchargement
1 réponse
Geromini
Messages postés
36
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
26 août 2007
5
2 avril 2007 à 10:06
2 avril 2007 à 10:06
Rebonjour !
Et bien je crois que ce n'est pas la peine que vous preniez le temps de me répondre puisque je me suis débrouillé autrement.
Mais si ce post intéresse d'autres personnes, je vous invite tout de même à me répondre. Je suis moi-même encore intéressé par vos réponses.
A la prochaine !
Et bien je crois que ce n'est pas la peine que vous preniez le temps de me répondre puisque je me suis débrouillé autrement.
Mais si ce post intéresse d'autres personnes, je vous invite tout de même à me répondre. Je suis moi-même encore intéressé par vos réponses.
A la prochaine !
9 avril 2008 à 12:31
(Je me permets de dire cela car je suis tombé sur le forum en première réponse google pour ce problème)
16 juil. 2008 à 15:04
J'arrive après la guerre, genre seulement 3 mois plus tard, mais assez simplement on peut récupérer la liste des enregistrements concernés en faisant un SELECT qui aurait la même clause WHERE que l'UPDATE qu'on envisage. Ensuite, on ne prend que la première ligne avec PHP (par exemple), puis on fait l'UPDATE en utilisant la clé primaire.
Exemple (parce que c'est peut-être pas très clair ^^):
Soit une table "meuhmeuh" avec les champs: id | libelle | categorie | bonus_field
Si je veux faire:
$variable=mysql_query("UPDATE meuhmeuh SET bonus_field='Marguerite' WHERE libelle LIKE 'vache' AND categorie='normande'");
Je fais:
$variable1=mysql_query("SELECT id FROM meuhmeuh WHERE libelle LIKE 'vache' AND categorie='normande'");
$variable2=mysql_fetch_array($variable1); //extraction du premier enregistrement
mysql_query("UPDATE meuhmeuh SET bonus_field='Marguerite' WHERE id=".$variable2['id']);
En ne passant que par SQL la syntaxe devient un peu carnage mais est faisable:
UPDATE meuhmeuh SET bonus_field='Marguerite' WHERE id IN (
SELECT id FROM meuhmeuh WHERE libelle LIKE 'vache' AND categorie='normande' LIMIT 0,1
);
Voilà, comme le LIMIT n'est pas géré avec UPDATE (en tout cas sur mon MySQL 4.1.9), on a ici un moyen de le détourner en mettant un SELECT en cascade de l'UPDATE.
A vos claviers!
M3uH the Fun be with you.
16 juil. 2008 à 15:12
Le easyPHP de test (eh oui y'a des vieux) avec la version 4.1.9 dont je parlais renvoie:
#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
Donc reste la possibilité de passer par le langage de traitement des infos qui (en théorie) récupère les résultats de requêtes (à moins que l'objectif soit de faire des requêtes UPDATE une par une dans la console SQL...)
Voilà, stou pour aujourd'hui a priori :)