Besoin d'aide pour une requete sql

WRInaute discret
Bonjour,

Voilà ce que je veux faire: J'ai une table avec plusieurs champs (id, champ1, champ2, ...) et plusieurs enregistrements.

Je voudrais "updater" l'enregistrement dont id=1 pour qu'il prenne les valeurs de l'enregistrement dont l'id=2.

Je pensais à un truc du genre:
Code:
UPDATE table SET
champs1 = (SELECT champs1 FROM table WHERE id=2)
champs2 = (SELECT champs2 FROM table WHERE id=2)
champs3 = (SELECT champs3 FROM table WHERE id=2)
WHERE id=1
mais cela ne fonctionne pas :(

Une idée ?
 
L
lenono
Guest
Moof a dit:
Bonjour,

Voilà ce que je veux faire: J'ai une table avec plusieurs champs (id, champ1, champ2, ...) et plusieurs enregistrements.

Je voudrais "updater" l'enregistrement dont id=1 pour qu'il prenne les valeurs de l'enregistrement dont l'id=2.

Je pensais à un truc du genre:
Code:
UPDATE table SET
champs1 = (SELECT champs1 FROM table WHERE id=2)
champs2 = (SELECT champs2 FROM table WHERE id=2)
champs3 = (SELECT champs3 FROM table WHERE id=2)
WHERE id=1
mais cela ne fonctionne pas :(

Une idée ?

Bonjour,

Ce genre de requete ne devrait pas poser de problème pourtant !!!

Peut être pourrais tu mettre la requete complète et le message d'erreur ?

Vu la structure de la requete que tu exposes, ca doit pas être grand chose (sous réserve que l'enregistrement id=2 existe bien sur !!!)

A la limite, je mettrais ceci (virgules et parenthèses en plus) :

Code:
UPDATE table SET (
champs1 = (SELECT champs1 FROM table WHERE id=2),
champs2 = (SELECT champs2 FROM table WHERE id=2),
champs3 = (SELECT champs3 FROM table WHERE id=2)
)
WHERE id=1
 
WRInaute discret
Merci pour la réponse, et désolé pour mon manque de réactivité.

Bien vu pour les virgules, mais le problème ne vient pas de là. Voilà l'erreur que j'obtiens :
Code:
#1093 - You can't specify target table 'table' for update in FROM clause
 
Discussions similaires
Haut