Mysql : copier une valeur vers un autre champ

Résolu
new morning Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
 Etranger -
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" " ?
Configuration: Linux
Firefox 3.0.8

2 réponses

  1. Etranger
     
    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
    1. new morning Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   19
       
      Bien vu Etranger !

      Merci, c'est résolu.
      0
      1. Etranger > new morning Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
         
        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
  2. new morning Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   19
     
    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
    1. Etranger
       
      Ok d'accord :) Merci.
      0