Besoin d'aide pour une requete sql

Moof

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 ?
 

lenono

WRInaute discret
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
 

Moof

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