Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1381 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  UPDATE avec JOIN, WHERE, LIMIT, ORDER BY

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

UPDATE avec JOIN, WHERE, LIMIT, ORDER BY

n°2026485
nisalon_ca​je
Posté le 02-10-2010 à 19:08:21  profilanswer
 

Bonjour,

 

J'ai une table test comportant 3 champs :
id nb clef

 

J'aimerais faire la requête SQL suivante sur cette table :

Code :
  1. UPDATE test JOIN test2 ON test.id=test2.id SET nb=74 WHERE nb>1 ORDER BY clef DESC LIMIT 2

et j'obtiens le message d'erreur suivant :

Code :
  1. "#1221 - Incorrect usage of UPDATE and ORDER BY"
 

Si je supprime la partie de la requête concernant la jointure (JOIN test2 ON test.id=test2.id), la requête fonctionne correctement.

 

Notez que dans le cas "réel", la partie "WHERE nb>1" est remplacée par une conditions sur les champs de la table avec la jointure, c'est d'ailleurs pour cela que j'ai besoin de faire la jointure.

 

Pourriez vous m'aider à résoudre le problème ?

 

Merci d'avance


Message édité par nisalon_caje le 02-10-2010 à 19:12:11
mood
Publicité
Posté le 02-10-2010 à 19:08:21  profilanswer
 

n°2026501
flo850
moi je
Posté le 02-10-2010 à 20:10:26  profilanswer
 

Citation :

Multiple-table syntax:

 

UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
    [WHERE where_condition]


http://dev.mysql.com/doc/refman/5.1/en/update.html

 

donc
UPDATE test, test2 SET nb=74 WHERE  test.id=test2.id AND nb>1 ORDER BY clef DESC LIMIT 2


Message édité par flo850 le 02-10-2010 à 20:10:50
n°2026502
nisalon_ca​je
Posté le 02-10-2010 à 20:52:55  profilanswer
 

Cela ne marche pas. D'après le lien du manuel que vous m'avez donné, dans le cas d'une update multi table, les instructions order by et limit ne peuvent pas être utilisées.
 
Y aurait-il une autre manière de procéder ?


---------------
http://nisalon.labrute.com/
n°2026509
skeye
Posté le 02-10-2010 à 21:25:36  profilanswer
 

update ...  where [id] in (select id from ... where...order by...) ?


Message édité par skeye le 02-10-2010 à 21:26:35

---------------
Can't buy what I want because it's free -
n°2027143
lasnoufle
La seule et unique!
Posté le 05-10-2010 à 17:59:52  profilanswer
 

J'suis curieux, c'est quoi l'intéret d'un order by pour faire un update? Tu n'as aucun résultat à afficher, pourquoi vouloir trier?


---------------
C'était vraiment très intéressant.
n°2027145
skeye
Posté le 05-10-2010 à 18:03:53  profilanswer
 

lasnoufle a écrit :

J'suis curieux, c'est quoi l'intéret d'un order by pour faire un update? Tu n'as aucun résultat à afficher, pourquoi vouloir trier?


Il fait aussi un limit. ;)


---------------
Can't buy what I want because it's free -

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  UPDATE avec JOIN, WHERE, LIMIT, ORDER BY

 

Sujets relatifs
comment fonctionne ORDER BY RAND() ?passer une variable dans la clause where ... besoin d'aide
update ou pas d'un champs[Access / SQL] Update avec join
[mysql] SELECT puis UPDATE du SELECT en une requete[SQLSERVER]update + case
[BO] Table comparison qui ne renvoie pas les updateTrigger SQL sur colonne Update
Plus de sujets relatifs à : UPDATE avec JOIN, WHERE, LIMIT, ORDER BY


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR