How to do cross table update in Oracle
Cross table update (also known as correlated update, or multiple table update) in Oracle uses non-standard SQL syntax format (non ANSI standard) to update rows in another table. The differences in syntax are quite dramatic compared to other database systems like MS SQL Server or MySQL.
In this article, we are going to look at four scenarios for Oracle cross table update.
Suppose we have two tables Categories and Categories_Test. See screenshots below.
The common column in the two tables is CATEGORY_ID. We are going to update column DESCRIPTION and PICTURE in table Categories_Test by using data in table Categories, based on data in the common column CATEGORY_ID.
1. Update data in a column in table A based on a common column in table B.
The update query below shows that the PICTURE column is updated by looking up the same ID value in CATEGORY_ID column in table Categories_Test and Categories.
PICTURE column was updated.
2. Update data in two columns in table A based on a common column in table B.
If you need to update multiple columns simultaneously, use comma to separate each column after the SET keyword.
Both DESCRIPTION and PICTURE column were updated.
3. Conditionally update data in table A based on a common column in table B.
Here we only want to update PICTURE column in Categories_Test table where the data in Category_Name column is Seafood in table Categories.
PICTURE column was updated where Category_Name is Seafood.
The query below does NOT work for this conditional update. It always updates all rows in PICTURE column in table Categories_Test.
4. Update data in table A based on two or more common columns in table B.
Updates based on two or more common columns are normally used for tables where multiple columns work together as a primary key (known as composite primary key). These columns uniquely identify a record in a table. Please note that query below is used for illustration purpose because Category_ID alone is primary key.
Data in DESCRIPTION and PICTURE column in table Categories_Test were updated.
Copyright © 2017 GeeksEngine.com. All Rights Reserved.
This website is hosted by HostGator.
No portion may be reproduced without my written permission. Software and hardware names mentioned on this site are registered trademarks of their respective companies. Should any right be infringed, it is totally unintentional. Drop me an email and I will promptly and gladly rectify it.