The query is using the UPDATE to iterate over the INNER JOIN.As such the ON functions as your WHERE clause and the INNER JOIN skips records that are not found in the JOINed table.TOP ( ) Specifies one or more table hints that are allowed for a target table. @Note When referencing the Unicode character data types nchar, nvarchar, and ntext, 'expression' should be prefixed with the capital letter ' N'.
Note Any call to OPENDATASOURCE, OPENQUERY, or OPENROWSET in the FROM clause is evaluated separately and independently from any call to these functions used as the target of the update, even if identical arguments are supplied to the two calls.In particular, filter or join conditions applied on the result of one of those calls have no effect on the results of the other.Any characters not found in this code page are lost.DEFAULT Specifies that the default value defined for the column is to replace the existing value in the column.In the following lines, I am going to show you three tricks that have made my life simpler on many occasions.
For that, we first need two tables: If you want to follow along, you can get the script here: The Hidden SQL Server Gem - UPDATE from Now that we have the environment set up, let's dive into how to make this work.
All other references to the object in the FROM clause must include an object alias.
A view with an INSTEAD OF UPDATE trigger cannot be a target of an UPDATE with a FROM clause.
Common table expressions can also be used with the SELECT, INSERT, DELETE, and CREATE VIEW statements.
For more information, see WITH common_table_expression (Transact-SQL). For information about table hints, see Table Hints (Transact-SQL).
If CTEs are your thing, you can even go a step further with this.