In this tutorial I will give you example of SQL Update queries which will include SQL update join examples. I will use SQL Server 2008 R2 for my samples which should work with previous version of SQL Server without any problems.
SQL Update is used to update one table columns with specified values. You can update one or multiple columns at the same time. For instance you might want to update customer address and this case you would update several columns like AddressLine1, AddressLine2, City, Post code with usually either hard coded or provided values from end user application. You could also update values using calculated fields for instance you might want to update Employee holiday entitlement (once a year) and you could use Employee start date to calculate number of years that employee has worked for the company and use some "IF" (case in SQL) logic to specify the correct holiday entitlement. Very often you might want to perform updates using another related table and for instance in our Holiday entitlement case we could use a HolidayEntitlement table and match it against our YearsWorked that could be calculated using EmployeeStartDate and provide matching row (HolidayEntitlement) from related HolidayEntitlement table. This SQL Update Join that I will give you examples of but be careful with joins this method can be tricky and I will give examples when it can go wrong. Apart from specifing or matching rows in SQL Update the most common task is to specify correct filter (or join) so we update only the rows with values we want to affect. Below I will provide you with simple syntax and later on provide you examples that will cover types of updates I mentioned.
Below I will give you basic and most popular example of SQL Update syntax which should work in most cases but there are more complicated syntaxes and I will show them to you with examples and screenshots later in this section.
Remember you can only update one table at a time but you can update multiple fields at the same time by separating them using commas.
SET ColumnName = NewValue
,ColumnName2 = NewValue2
WHERE ColumnName = FilterValue
SQL Update Simple Example
In the example below we change Katie's surname to Glownia based on her CustomerID which is 2
The above example is the most popular SQL update and in our sample we used simple condition.
TIP: Very often you will want to perform updates on single or multiple rows. The best approach to ensure you update correct rows is to perform SELECT with the same conditions before you perform the actual update as it is not easy to "undo" your updates.
Warning: Make sure you use WHERE clause otherwise you might end up accidentely updating all values like in the example below (which occasionally is intentional)
Warning: See below nonsense example.
It is also fairly common to perform SQL Update Join which means that we will update one table using another table and join condition. Below is an example where I have a customer table and I have UpdatedCustomer table that contains 'latest' customer details let say from another source system. In my case I want to update my Customer table using the latest data. In order to do that I perform join between my udpate target table and my source table using join on customerID. Notice the FROM I use the same table as in the update line; this is how it know how to 'map' rows for the update.
Warning: Updates using join can be sometimes tricky. If you have join that produces more than one match for the target table then you may get unexpected results without warning! See below example
Warning: Wrong join and you end up with nonsense results. See below
SQL Update (Microsoft)
SQL Update (wikipedia)