![]() |
Datenbank: MSSQL • Version: - • Zugriff über: -
Update von mehreren Spalten über ein Subselect
Hallo zusammen :)
Ich möchte mehrere Werte eines Datensatzes über ein Subselect ändern
Code:
Unter Oracle funktioniert dieses Statement, unter MSSQL leider nicht. Nun ist es sicherlich kein Problem, für jeden Wert ein einzelnes Subselect zu verwenden:
UPDATE tab1
SET (col1, col2, col3) = (SELECT val1, val2, val3 FROM tab2, tab3 WHERE...) WHERE ...
Code:
Allerdings empfinde ich das doch als ziemlich umständlich. Gibt es hierfür unter MSSQL eine "schönere" Variante?
UPDATE tab1
SET col1 = (SELECT val1 FROM tab2, tab3 WHERE...), col2 = (SELECT val2 FROM tab2, tab3 WHERE...), col3 = (SELECT val3 FROM tab2, tab3 WHERE...) WHERE ... |
AW: Update von mehreren Spalten über ein Subselect
was heißt "funktioniert nicht"?
gibt es vielleicht eine Fehlermeldung? Sinngemäß steht dann darin " Select darf nur einen Wert zurück geben"? Dannn solltest Du den Select etsprechend modifizieren. Gruß K-H |
AW: Update von mehreren Spalten über ein Subselect
Code:
Die unter Oracle valide Syntax wird MSSQL nicht kennen.
Falsche Syntax in der Nähe von '('.
Ich bekomme über das Subselect nur einen Datensatz zurück, das passt schon. Ich würde mir gerne die verschiedenen "unnötigen" Subselects, wo sich im Enddefekt nur der zu selektierende Wert ändert, sparen. :) |
AW: Update von mehreren Spalten über ein Subselect
Code:
so ähnlich müsste das gehen. Wozu gibts eigentlich die OH vom SQL-Server?
update
Tabelle set Wert1=SelectedValue1, Wert2=SelectedValue2 from (select SelectedValue1, SelectedValue2 from AnotherTable ) x where x.SomeID = Tabelle.PK |
AW: Update von mehreren Spalten über ein Subselect
Die Lösung funktioniert, danke sehr. :thumb:
Ich muss zu meiner Schande gestehen, dass ich an diese syntaktische Lösung gar nicht gedacht habe. Ist jetzt hoffentlich im Hirn abgespeichert. Google hatte ich verwendet, aber nichts passendes gefunden. Die OH habe ich irgendwie übersehen :oops: |
AW: Update von mehreren Spalten über ein Subselect
Na ja, so genau steht das auch nicht in der OH, dort steht nur was über 'external tables'.
Ich habe letzte Woche gerade eine Schulung für Mitarbeiter abgehalten und denen war auch nicht bewusst, das man ein benanntes SELECT-Statement genauso behandeln kann, wie eine Tabelle. Und der Rest ist einfach: Überall wo 'Tabelle' steht, kann man dann ein SELECT einbauen. Nur benannt muss es halt sein, also Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz