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?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Update mehrere Spalten, in deinem Fall müssen Sie mehrere Verknüpfungen (wie skizziert von Martin)
Verwenden Sie die OUTER-joins nicht jede Skillung gespeichert ist, für jedes Auto.
Im Falle, dass Martin die Lösung nicht funktioniert (wenn es drei mal), könnten Sie es tun, auch auf einmal ... obwohl ein bisschen mehr arkward:
Den
ELSE
Teil ist nicht zwingend erforderlich. Aber wenn es nicht da ist, alle Fälle nicht ausgewertet werden durch NULL ersetzt.