Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Aktualisierungsabfrage und „Unterabfrage hat mehr als einen Wert zurückgegeben“

Ihre Unterabfrage ist überhaupt nicht korreliert. Der Bezeichner „TableA.key“ in der Unterabfrage bezieht sich auf TableA in der FROM-Klausel der Unterabfrage, nicht auf die Zieltabelle der Aktualisierung (die zufällig auch TableA ist). Sie möchten TableA.field nicht mit der Ergebnismenge einer Zwei-Tabellen-Verknüpfung aktualisieren. Sie wollen einfach das:

UPDATE TableA  
   SET TableA.field = (SELECT TableB.field  
                       FROM TableB
                       WHERE TableA.key = TableB.key)