Rechercher : dans
Par :

[SQL] LIMIT avec UPDATE

Dernière réponse le 16 jui 2008 à 15:12:12 Geromini, le 2 avr 2007 à 09:58:22 
 Signaler ce message aux modérateurs

Bonjour à tous !

J'aimerais s'il est possible d'utiliser la clause LIMIT avec un UPDATE.
Si non, existe-t'il une autre façon de prendre un seul tuple ?

Merci d'avance pour vos réponses. "Il est dit que celui qui fait mal à autrui ne trouvera jamais le sommeil."

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [SQL] LIMIT avec UPDATE » dans :
Windows Update [toutes versions] VoirLe moyen le plus commode pour tenir à jour son système est de passer par Démarrer>Tous les programmes>Windows Update. Une fois sur le site, seules seront proposées les mises à jour nécessaires. Cependant, un assez grand nombre d'utilisateurs...
Update Checker - Vos logiciels sont-ils à jour ? VoirVous avez du mal à tenir tous vos logiciels à jour ? En effet, sous Windows, quand on a plusieurs dizaines de logiciels installés sur le système, il est difficile de vérifier qu'ils sont tous bien à jour. Sommaire Update Checker, la...
Update failed avg free VoirLorsque vous souhaitez mettre à jour votre antivirus AVG Free, celui-ci affiche le message suivant : update failed , the connection with update server has failed La traduction de ce message est la suivante : la mise a jour a échoué, votre...
Télécharger Update Checker VoirVous avez un peu marre de recherche les mises à jour de vos logiciels un par un ? Update Checker est là pour le faire à votre place. En effet, ce logiciel permet de trouver la liste des logiciels installés sur votre PC ainsi que leurs versions...
SQL - Mise à jour d'informations VoirLe SQL permet la modification d'une table par un utilisateur (pour peu qu'il ait les droits suffisants...). La modification d'une table consiste à: ajouter des tuples modifier des tuples existants ou bien supprimer des tuples Insertion de...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...

1

Geromini, le 2 avr 2007 à 10:06:00
  • +1

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 ! "Il est dit que celui qui fait mal à autrui ne trouvera jamais le sommeil."

Répondre à Geromini

2

Sh@e, le 9 avr 2008 à 12:31:32

L'idéal serait que tu laisse ta solution sur le forum afin que tout le monde en profite :-)

(Je me permets de dire cela car je suis tombé sur le forum en première réponse google pour ce problème)

Répondre à Sh@e

3

M3uH, le 16 jui 2008 à 15:04:57

Bonjour bonjour,

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.

Répondre à M3uH

4

 M3uH, le 16 jui 2008 à 15:12:12

Erratum: il vous faut MySQL 5 minimum pour gérer le LIMIT dans une sous-requête.
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 :)

Répondre à M3uH
Collection CommentÇaMarche.net