Mysql : copier une valeur vers un autre champ

Résolu/Fermé
new morning Messages postés 127 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 15 mai 2013 - 6 avril 2009 à 20:42
 Etranger - 7 avril 2009 à 14:16
Bonjour,

J'ai 2 tables de structure identique (source et copie). Je veux copier toutes les valeurs d'un enregistrement de source vers la table copie.

Hors, si je fais

INSERT INTO  copie SELECT * FROM source WHERE id=1


Je me retrouve avec l'erreur courante
#1136 - Column count doesn't match value count at row 1


Je pense que c'est lié au fait que l'index ne peut pas être copié. Pour contourner, je peux bien sûr écrire

INSERT INTO  copie SELECT (champs_1, champs_2, champs_3, ... champs_n) FROM source WHERE id=1


Mais c'est un peu longuet...

Peut on sélectionner "tout sauf le champs "id" " ?
A voir également:

2 réponses

Apparemment ce n'est pas possible.
Quelqu'un donne sa façon de faire pour remédier à son problème (qui est le même que le tien) mais ca a l'air compliqué :
http://www.sqlfr.com/forum/sujet-SELECT-SAUF-CHAMP_1261073.aspx

Bon courage !
0
new morning Messages postés 127 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 15 mai 2013 19
7 avril 2009 à 13:56
Bien vu Etranger !

Merci, c'est résolu.
0
Etranger > new morning Messages postés 127 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 15 mai 2013
7 avril 2009 à 14:08
Tu as fait comment alors ??
Est-ce que tu as trouvé une solution ou est-ce que tu as pris la solution du lien que je t'ai donné ou est-ce que tu as donné les noms de variables ??
Si tu as trouvé une solution, ce serait sympa de la partager :)
0
new morning Messages postés 127 Date d'inscription lundi 13 août 2007 Statut Membre Dernière intervention 15 mai 2013 19
7 avril 2009 à 14:14
A première vue je pense que la solution que donne ton lien est bonne. Cependant dans mon cas c'est plus trivial que ça : j'avais interverti l'ordre de mes requête, ce qui explique qu'une de mes tables contenait une colonne de plus que l'autre !

La seule leçon à retenir de cette bêtise est qu'il n'y a aucune difficulté à copier toute la ligne d'une table vers l'autre : au pire (c'est ce qui se passe chez moi) la clef "id" est ignorée (c'est à dire qu'elle n'est pas "copiée" mais seulement incrémentée). Donc aucun pb en fait pour faire ce que je croyais faire:

CREATE TABLE copie LIKE source
INSERT INTO  copie SELECT * FROM source WHERE id=1
0
Ok d'accord :) Merci.
0