UPDATE table1
SET col = 1
WHERE col2 = 'xyz'
UPDATE a
SET col = 1
FROM table1 a
WHERE col2 = 'xyz'
Welches ist bevorzugt?Gibt es einen Unterschied zwischen diesen beiden einfachen SQL Update-Anweisungen?
Ein Unterschied, den ich herausfinden konnte, war, dass die zweite Anweisung es ermöglicht, WITH NO LOCK in der Nähe der 'FROM'-Anweisung zu verwenden. Wenn es jedoch in der Nähe der update-Anweisung verwendet wird, gibt es die gleiche Fehlermeldung wie die erste Anweisung
Die Sperrhinweise NOLOCK und READUNCOMMITTED sind für Zieltabellen von INSERT-, UPDATE- oder DELETE-Anweisungen nicht zulässig.
Vielen Dank
Kein Unterschied in Ihrem spezifischen Beispiel. Die bisherigen Antworten erwähnen die Möglichkeiten von Joins. Sie sollten jedoch gewarnt werden, dass Joins gefährlich sein können - wenn das Ergebnis des Joins bedeutet, dass eine Zeile aus der Zieltabelle mit * multiple * Zeilen aus anderen Tabellen verbunden wurde und die Aktualisierung auf Werten aus den anderen Tabellen basiert, die Zeile (n) wird tatsächlich verwendet, um das Update durchzuführen ist nicht deterministisch. –