MS SQL Server Concepts and Programming Question:
Download Job Interview Questions and Answers PDF
Is the Order of Columns in the SET Clause Important in MS SQL Server?
Answers:
Answer #1The answer is NO. The order of columns in the SET clause of the UPDATE statement is NOT important. You probably already noticed from the previous tutorial. There is a BIG DIFFERENCE among SQL Server, MySQL and Oracle on update multiple columns with previous values:
* SQL Server provides you the existing values from the database on columns names used in new value expressions. So the order of columns in the SET clause is NOT important
* MySQL provides you the updated values on columns names used in new value expressions. So the order of columns in the SET clause is important.
* Oracle provides you the existing values from the database on columns names used in new value expressions. So the order of columns in the SET clause is NOT important
Here is a good tutorial exercise:
SELECT * FROM ggl_links
-- Check the old values
SELECT * FROM ggl_links WHERE url = 'www.globalguideline.com'
GO
id url notes counts created
101 www.globalguideline.com Good. 999 2006-04-30
-- Update "id" before "counts"
UPDATE ggl_links SET id = id+200, counts = id*2
WHERE url = 'www.globalguideline.com'
GO
(1 row(s) affected)
* SQL Server provides you the existing values from the database on columns names used in new value expressions. So the order of columns in the SET clause is NOT important
* MySQL provides you the updated values on columns names used in new value expressions. So the order of columns in the SET clause is important.
* Oracle provides you the existing values from the database on columns names used in new value expressions. So the order of columns in the SET clause is NOT important
Here is a good tutorial exercise:
SELECT * FROM ggl_links
-- Check the old values
SELECT * FROM ggl_links WHERE url = 'www.globalguideline.com'
GO
id url notes counts created
101 www.globalguideline.com Good. 999 2006-04-30
-- Update "id" before "counts"
UPDATE ggl_links SET id = id+200, counts = id*2
WHERE url = 'www.globalguideline.com'
GO
(1 row(s) affected)
Answer #2-- Check the new values
SELECT * FROM ggl_links WHERE url = 'www.globalguideline.com'
GO
id url notes counts created
301 www.globalguideline.com Good. 202 2006-04-30
-- Reset to old values
UPDATE ggl_links SET id = 101, counts = 999
WHERE url = 'www.globalguideline.com'
(1 row(s) affected)
Notice that the "id" in the "counts" new value expression is taking the old value of the "id" column, not the updated value, even the "id" column is updated before the "counts" column.
Now try this on a MySQL server, you will get different result.
SELECT * FROM ggl_links WHERE url = 'www.globalguideline.com'
GO
id url notes counts created
301 www.globalguideline.com Good. 202 2006-04-30
-- Reset to old values
UPDATE ggl_links SET id = 101, counts = 999
WHERE url = 'www.globalguideline.com'
(1 row(s) affected)
Notice that the "id" in the "counts" new value expression is taking the old value of the "id" column, not the updated value, even the "id" column is updated before the "counts" column.
Now try this on a MySQL server, you will get different result.
Download MS SQL Server Interview Questions And Answers
PDF
Previous Question | Next Question |
How to use old values to define new values in UPDATE statements in MS SQL Server? | How To Use Values from Other Tables in UPDATE Statements in MS SQL Server? |