none
SQL-Spalte einer 2. Tabelle in die 1.kopieren oder innerhalb der gleichen Spalte nach vorne...

    Frage

  • Hallo zusammen,

    ich habe eine Tabelle mit mehreren Spalten, u.a. 1000 Namen. Diese möchte ich durch Zufallsnamen einer Beispieldatenbank(also andere Tabelle) ersetzen. ich habe es schon hinbekommen dass die Zufallsnamen eingefügt werden, aber ganz am schluss als neue 1000 spalten. Die Beispieltabelle hat natürlich andere IDs Bezeichnungen als meine...

    aber wie kann ich meine Namen ersetzen durch die in der Beispieltabelle? Müsste ja mit update gehen statt insert - aber bei verschiedenen IDs??

    oder andere Möglichkeit?

    Und wenn sie jetzt sogar schon in der gleichen spalte aber am schluss stehen, also ID 1-1000 sind richtige Namen, IDs 1001-2000 die Beispielnamen - kann ich die nach vorne schieben und die Namen ersetzen so nach dem Motto Update von Spalte Namen der )hinteren= ID 1001-2000 nach vorne ID 1-1000?

    Wäre ein Traum wenn jemand eine Idee hat. Über Copy paste im MS Managment studio gehts leider auch nicht...

    Montag, 18. Februar 2019 08:31

Antworten

  • Hi,

    letzteres könnte man (so die IDs denn alle da sind) bspw. so machen:

    WITH Query AS
    (
        SELECT ID, SpalteX
        FROM   Tabelle
        WHERE  ID BETWEEN 1001 AND 2000
    )
    UPDATE Tabelle
    SET    Tabelle.SpalteX = Query.SpalteX
    FROM Query WHERE Tabelle.ID = Query.ID - 1000 AND Tabelle.ID BETWEEN 1 AND 1000

    Per Zufallszuordnung evtl. auch so:

    WITH Query AS
    (
        SELECT ROW_NUMBER() OVER ( ORDER BY NEWID() ) AS ID,
               SpalteX
        FROM   Tabelle
    )
    UPDATE Tabelle
    SET    Tabelle.SpalteX = Query.SpalteX
    FROM   Query
    WHERE  Tabelle.ID = Query.ID
    AND    Tabelle.ID BETWEEN 1 AND 1000

    Hab das jetzt nur schnell dahingeschrieben, könnten also noch Fehler enthalten sein.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Montag, 18. Februar 2019 08:50
    Moderator