Announcement

Collapse
No announcement yet.

Neue Kolonne hinzufügen aus einem SELECT

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Neue Kolonne hinzufügen aus einem SELECT

    Hallo,

    Ich würde gerne einer Tabelle t eine neue Kolonne hinzufügen, die aus einem "Select" erstellt wurde. Ich dachte in etwa so:

    ALTER TABLE t ADD (
    SELECT
    CASE
    WHEN x > 0 THEN 1
    ELES 0
    END 'y'
    FROM t
    )

    Ich möchte also das y neu in Tabelle t hinzufügen (x ist eine Kolonne von t).

    Besten Dank für die Hilfe.

    giordano

    PS: Ich habe im Archive nichts gefunden. Falls diese Frage nicht dem Niveau dieses Forums entspricht, wäre ich froh um einen Hinweis.

  • #2
    teils doch einfahch in 2 Kommandos auf...

    eins fügt eine neue Spalte hinzu

    und das andere führt ein Update durch

    Comment


    • #3
      Originally posted by giordano View Post
      Hallo,

      Ich würde gerne einer Tabelle t eine neue Kolonne hinzufügen, die aus einem "Select" erstellt wurde. Ich dachte in etwa so:

      ALTER TABLE t ADD (
      SELECT
      CASE
      WHEN x > 0 THEN 1
      ELES 0
      END 'y'
      FROM t
      )
      denke nicht das man da Querys verwenden kann...

      Unter MS-SQL geht das so (vielliecht hilfts ja weiter):

      [HIGHLIGHT="SQL"]BEGIN TRAN;

      CREATE Table T (X INT)
      INSERT INTO T SELECT 0 UNION SELECT 1 UNION SELECT 2 UNION SELECT -1;

      ALTER TABLE t
      ADD y AS CASE WHEN x > 0 THEN 1 ELSE 0 END;

      Select X, Y FROM T;

      ROLLBACK[/HIGHLIGHT]
      [HIGHLIGHT="Result"]X Y
      ----------- -----------
      -1 0
      0 0
      1 1
      2 1[/HIGHLIGHT]

      Comment


      • #4
        Hallo fanderlf und ebis,

        Besten Dank für die prompte Antworten. Ich werde es in zwei Schritten machen, wie vorgeschlagen. Ich hatte gedacht, dass diese Aufgabe problemlos in einem Schritt zu bewerkstelligen wäre.

        Gruss

        giordano

        Comment


        • #5
          Originally posted by giordano View Post
          Ich hatte gedacht, dass diese Aufgabe problemlos in einem Schritt zu bewerkstelligen wäre.
          ist es doch auch in einem Schritt, wenn mysql die Implementation von computed columns in irgendeiner Form unterstützt

          ALTER TABLE t ADD y AS CASE WHEN x > 0 THEN 1 ELSE 0 END;

          Comment


          • #6
            Hallo ebis,

            Danke für die Antwort. Ich habe Deinen Vorschlag ausprobiert, jedoch gibt MySQL einen Syntax-Fehler an. Ich nehme an, "computed coloumns" wird nicht unterstützt.

            Gruss
            Fabio

            *******************
            CREATE TABLE x (
            a INTEGER default NULL,
            b CHAR(2) default NULL);

            INSERT INTO x (a,b)
            VALUES
            (1,"a"),
            (0,"b"),
            (0,"c"),
            (4,"d");

            ALTER TABLE x ADD c AS CASE WHEN a > 0 THEN 1 ELSE 0 END;
            ***********************************

            Comment

            Working...
            X