UPDATE mit select-statement und innerer Join

UPDATE TABLE1 set TABLE1.col1 = TABLE2.col1 FROM TABLE2 INNER JOIN TABLE3 ON COL2 = TABLE2.COL2 WHERE TABLE1.COL3 = TABLE3.COL3 

Wird die obige Abfrage funktionieren, wenn die JOIN mehrere Zeilen pro Bedingung zurückgibt? Ich bin nicht in der Lage, es zu aktualisieren, trotz der Möglichkeit, einzeln zu Table3 und Table2 .

Bitte helfen Sie. Ich hoffe, die Informationen sind ausreichend.

Nein, du musst nur 1 Zeile aus Table2 wählen – SQL server wird stattdessen die passende Zeile aus Tabelle2 auswählen.

Wenn es mehrere Zeilen gibt, wird eine beliebige Zeile für die Aktualisierung verwendet. Es wird kein Fehler gegeben. Sie können es zwingend erforderlich machen, dass eine Zeile von der Verknüpfung zurückgegeben wird, indem sie das UPDATE zu einem MERGE ändert

Wie Sie auf SQL server 2005 sind, steht Ihnen MERGE nicht zur Verfügung.

Um ein deterministisches Ergebnis zu erhalten, benötigen Sie eine korrelierte Unterabfrage.

 UPDATE TABLE1 SET TABLE1.col1 = ISNULL((SELECT TOP (1) TABLE2.col1 FROM TABLE2 INNER JOIN TABLE3 ON TABLE3.COL2 = TABLE2.COL2 WHERE TABLE1.COL3 = TABLE3.COL3 ORDER BY TABLE2.col1), TABLE1.col1)