MSSQL - Tabelle mit mehreren Werten aktualisieren


augs

Grünschnabel
#1
Hallo zusammen,

vermutlich ist es ziemlich simpel aber ich bekomme es auch nach langer Suche und viel Trial and Error nicht hin.

Mein Ziel ist es, eine Spalte in einer Tabelle mit circa 3000 Zeilen mit mehreren Werten zu aktualisieren. Die Spalte heißt Gruppe. Die Tabelle ist entsprechend der Spalte ID aufsteigend sortiert.

Nun möchte ich jeder ID eine neue Gruppe zuweisen. Dafür habe ich eine Liste mit 3.000 unterschiedlichen Gruppenwerten. Bspw: 1000, 1200, 1300, 1440, 1550 usw. Diese Liste ist bereits in der richtigen Reihenfolge für die Zuordnung ID zur Gruppe.

Wie schaffe ich es nun, die Aktualisierung vorzunehmen?

Da ich keine Berechtigung habe, um eine Hilfstabelle mit dem Schlüssel ID und der entsprechenden Gruppe anzulegen, auf die ich dann mit einem JOIN zurückgegriffen hätte, weiß ich echt nicht weiter. Für UPDATE und INSERT INTO habe ich allerdings Berechtigungen. Leider kann ich ja hier nicht wie z.B: bei MySQL mit ON DUPLICATE arbeiten und mit MERGE kam ich auch nicht weiter.

Vielleicht kann mir jemand von Euch auf die Sprünge helfen.

Vielen Dank!
 

augs

Grünschnabel
#2
Also mit MERGE bin ich nun voran gekommen:

MERGE ART
USING (VALUES (11, '3500'),
(20, '3500'),
(23, '1900'),
(24, '1900'),
(25, '1900'),
(27, '1900')) AS pairs(ART_ID_Neu, Artikelgruppe_Neu)
ON ART_ID = ART_ID_Neu
WHEN MATCHED
THEN UPDATE SET Artikelgruppe = Artikelgruppe_Neu;

Allerdings hoffe ich noch immer, dass es irgendwie einfacher geht.
 

Rene42

Erfahrenes Mitglied
#3
Guten Morgen,

so richtig verstehe ich nicht warum man kein einfaches UPDATE mit einem JOIN zwischen deiner ersten Tabelle und der Tabelle der Gruppenwerte machen kann. (Evtl. ist es auch noch zu früh ;))

Code:
UPDATE Tabelle1 LEFT JOIN Tabelle2 ON Tabelle1.ID=Tabelle2.ID SET Tabelle1.Gruppe=Tabelle2.Gruppe;
Leider weiß man nicht so rechte wie deine Tabellen und Spalten heißen.