INNER JOIN UPDATE Often we may need to update a column in a table based of another column in another table.
In SQL Server you can do this using UPDATE statement by joining tables together.
To understand this better let’s take a look at below contrived example.
USE [SqlAndMe]
GO
SELECT CustomerID, Name, OrderAmount
FROM dbo.Customers
GO
SELECT OrderID, CustomerID, Amount
FROM dbo.Orders
GO
Result Set:
CustomerID Name OrderAmount
3 Curtis NULL
4 Lanna NULL
5 Marlin NULL
6 Henry NULL
(4 row(s) affected)
OrderID CustomerID Amount
107 6 8745.00
123 5 4582.00
643 3 5693.00
(3 row(s) affected)
In the above data I want to update OrderAmount column of dbo.Customers with values fromAmount column of dbo.Orders.
To achieve this we can use UPDATE statement as below:
UPDATE CUST
SET CUST.OrderAmount = ORDR.Amount
FROM dbo.Customers CUST
INNER JOIN dbo.Orders ORDR ON CUST.CustomerID = ORDR.CustomerID
GO
(3 row(s) affected)
OrderAmount column in dbo.Customers Table is now updated based on JOIN condition.
SELECT CustomerID, Name, OrderAmount
FROM dbo.Customers
GO
CustomerID Name OrderAmount
3 Curtis 5693.00
4 Lanna NULL
5 Marlin 4582.00
6 Henry 8745.00
(4 row(s) affected)
ภาษาไทย
ถ้าเราต้องมีการ update หรือ delete ข้อมูลในฐานข้อมูลคราวละหลาย record ด้วยเงื่อนไขบางอย่าง ถ้าเป็นไปได้ควรจะเขียนให้ทำงานได้ด้วยคำสั่ง SQL Command เดียว หากเงื่อนไขนั้นอยู่ในตารางที่ต้องการจะลบอยู่แล้ว SQL Command ก็จะตรงไปตรงมา อย่างเช่นคำสั่ง update ก็จะเป็นประมาณนี้
1
| update table1 set field1=0, field2= 'a' where field3 is null |
และการ delete
1
| delete from table1 where field3 is null |
แต่หากเราต้องการ update ตาราง table1 แต่ว่าเงื่อนไขเราอยู่ในตารางอื่น หรือแม้แต่ข้อมูลที่จะมา update อยู่ในตารางอื่น
ใน SQL Server เราสามารถใช้การ join เข้ามาช่วยใน sql ได้ดังนี้
ใน SQL Server เราสามารถใช้การ join เข้ามาช่วยใน sql ได้ดังนี้
1
2
3
| update t1 set t1.field1=0, t1.field2=t2.field2 from table1 t1 inner join table2 t2 on t1.joinfield=t2.joinfield where t2.field3 is null |
และการ delete
1
2
3
| delete from t1 from table1 t1 inner join table2 t2 on t1.joinfield=t2.joinfield where t2.field3 is null |
No comments:
Post a Comment