heinetz: MySQL insert select

Hallo Forum,

ich möchte in einer MySQL-Tabelle einen Datensatz kopieren. Soweit recht einfach mit:

  
 INSERT  
 INTO `table` ()  
 SELECT * FROM `table`  
 WHERE `id` = 1;  

Nun ist aber eines der Felder ein autoincrementiertes Feld und noch dazu unique. Hinzu kommt, dass auch einige andere Felder für die Kopie manipulieren muss. Bisher kriege ich das hin, indem ich sämtliche Felder
aufliste:

  
 INSERT  
 INTO `table` (  
  field_1,  
  field_2,  
  field_3  
 )  
 SELECT  
 NULL,  
 field_2,  
 "neuer Inhalt"  
 FROM `table`  
 WHERE `id` = 1;  

Da das sehr viel mehr Felder sind, die ich zu 90% nicht manipuliert kopieren will, ist das nicht sehr elegant. Gibt es da eine schönere Möglichkeit?

danke für Tipps und

beste gruesse,
heinetz

  1. Hi!

    [...] Bisher kriege ich das hin, indem ich sämtliche Felder aufliste:
    Da das sehr viel mehr Felder sind, die ich zu 90% nicht manipuliert kopieren will, ist das nicht sehr elegant. Gibt es da eine schönere Möglichkeit?

    Es gibt nur * oder explizite Auflistung. Eine "außer"-Klausel existiert nicht. Zumindest die Auflistung und NULL-Zuweisung des auto_increment-Feldes kannst du weglassen, denn weggelassene Felder beim Insert bekommen immer ihren Default-Wert.

    Lo!

    1. hi,

      Es gibt nur * oder explizite Auflistung. Eine "außer"-Klausel existiert nicht. Zumindest die Auflistung und NULL-Zuweisung des auto_increment-Feldes kannst du weglassen, denn weggelassene Felder beim Insert bekommen immer ihren Default-Wert.

      aber eben leider nur die. Um eine Auflistung sämlicher Felder komme ich also nicht herum, wenn ich eines davon abändern will ;(

      beste gruesse,
      heinetz

      1. Hi,

        Um eine Auflistung sämlicher Felder komme ich also nicht herum

        Dann automatisiere das Erstellen dieser Auflistung halt, wenn du es nicht manuell machen willst.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?