heiner: INSERT und SELECT bei mysql

Hai,

ich möchte bestimmte Felder von einer Tabelle in eine andere kopieren.

Meine Idee war folgende Anweisung:

INSERT INTO adress_new (email, name1, name2, name3) VALUES(SELECT EMAIL, NAME1, NAME2, NAME3 FROM adress WHERE gruppe = '2' or gruppe ='3')

Geht aber nicht.
Wie wärs richtig?

Danke

  1. Lieber heiner,

    INSERT INTO adress_new [...] FROM adress [...]
    Wie wärs richtig?

    mit Doppel-d.

    Liebe Grüße,

    Felix Riesterer.

    --
    "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
    1. @@Felix Riesterer:

      nuqneH

      INSERT INTO adress_new [...] FROM adress [...]
      Wie wärs richtig?

      mit Doppel-d.

      Referer
      Wie wär’s richtig?

      Mit Doppel-r.

      Oh, wait.

      Qapla'

      --
      „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      1. mir sinn frangn desweche dobbl d, wenn scho!

  2. Hi,

    INSERT INTO adress_new (email, name1, name2, name3) VALUES(SELECT EMAIL, NAME1, NAME2, NAME3 FROM adress WHERE gruppe = '2' or gruppe ='3')

    Geht aber nicht.
    Wie wärs richtig?

    RTFM: http://dev.mysql.com/doc/refman/5.5/en/insert-select.html

    MfG ChrisB

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
    1. RTFM: http://dev.mysql.com/doc/refman/5.5/en/insert-select.html

      MfG ChrisB

      OK soweit hab ichs jetzt:

      INSERT INTO adressen_neu (email, name1, name2)(SELECT EMAIL, NAME1, NAME2 FROM adressen WHERE GRUPPE >= '2')

      haut hin.

      Aber jetzt klemmts mit den doppelten Einträgen in der alten adress Tabelle

      Setz ich das email Feld in der neuen Tabelle auf unique steigt mysql bei der ersten doppelten aus.
      Ich möchte aber dass er einfach weitermacht und den 2. Eintrag ignoriert.

      Meine Idee:

      INSERT INTO adressen_news (email, name1, name2)(SELECT EMAIL, NAME1, NAME2 FROM adressen WHERE KUNDENGRUPPE >= '2') ON DUPLICATE KEY IGNORE

      Geht nicht :(

      1. Tach!

        Aber jetzt klemmts mit den doppelten Einträgen in der alten adress Tabelle
        Setz ich das email Feld in der neuen Tabelle auf unique steigt mysql bei der ersten doppelten aus.
        Ich möchte aber dass er einfach weitermacht und den 2. Eintrag ignoriert.
        Meine Idee:

        Es ist ja nicht verkehrt, eigene Ideen zu haben, aber diese sollte man dann überprüfen, ob sie zur vorgegebenen Syntax passen.

        INSERT INTO adressen_news (email, name1, name2)(SELECT EMAIL, NAME1, NAME2 FROM adressen WHERE KUNDENGRUPPE >= '2') ON DUPLICATE KEY IGNORE
        Geht nicht :(

        Das ist ja auch Phantasie-Syntax, die so nicht auf der bereits verlinkten Handbuchseite zu finden ist. (Da stehen übrigens auch keine Klammern um das SELECT-Statement.) Das IGNORE gibt es zwar, und es tut das was du möchtest, aber es muss an anderer Stelle notiert werden, so wie es auf der Handbuchseite zu sehen ist.

        dedlfix.