UPDATE Mehrere Zeilen Mithilfe von SQL 2008

Habe ich die folgende SQL-Anweisung, wo ich versuche zu aktualisieren mehrerer passenden Zeilen einer select-Anweisung.

UPDATE Cars
SET engineSize = CASE specCode WHEN 1 THEN value ELSE engineSize END
FROM Cars
INNER JOIN CarSpecs ON CarsSpecs.carID = Cars.carID

Meine Tabellen sind wie folgt:

Cars

carID   engineSize ...
1       0
2       0

CarSpecs

carID   specCode    value
1       1           1800
1       2           Blue
1       3           Petrol
2       1           2200
2       2           Green
2       3           Petrol

specCode bezieht sich auf eine Art der Spezifikation, die ich aktualisieren möchten, in der Tabelle für Autos (1 ist die Größe des Motors)

Wenn ich die Abfrage ausführen, es kommt wieder NULL ankommen. Die Art und Weise sehe ich es es sollte das specCode = 1 und den engineSize, um 1800 dann, nachdem es festgelegt, es stellt nur den ersten gefundenen Wert.

Irgendwelche Ideen?

Edit: ich muss update mehrere Spalten in der Tabelle für Autos. Das ist der Grund für die Verwendung FALL, dh:

UPDATE Cars 
SET engineSize = CASE specCode WHEN 1 THEN value ELSE engineSize END,
colour = CASE specCode WHEN 2 THEN value ELSE colour END
FROM Cars
INNER JOIN CarSpecs ON CarsSpecs.carID = Cars.carID
  • wenn Sie sagen, 'es kommt wieder null,' meinst du, dass der Motor Feld "Größe" auf null gesetzt ist, werden für alle Datensätze? Sie haben a-Einträge für jeden carID, wo specCode = 1 in der specs-Tabelle?
InformationsquelleAutor markvpc | 2010-02-28
Schreibe einen Kommentar