T-SQL筆記23_Update from 語法
由於系統絕大部分商業邏輯都包覆在Stored Procedure中
因此也時常捕獲到以前根本不會接觸過的一些很稀有的T-SQL寫法
最近看到一個update 語句讓我有愣一下
原來update 還能這樣下...
這裡準備一些測試用資料
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | CREATE TABLE dbo.Persons ( PersonId INT PRIMARY KEY IDENTITY(1, 1) NOT NULL, PersonName VARCHAR(100) NULL, PersonLastName VARCHAR(100) NULL, PersonPostCode VARCHAR(100) NULL, PersonCityName VARCHAR(100) NULL) GO CREATE TABLE AddressList( [AddressId] [int] PRIMARY KEY IDENTITY(1,1) NOT NULL, [PersonId] [int] NULL, [PostCode] [varchar](100) NULL, [City] [varchar](100) NULL) GO INSERT INTO Persons (PersonName, PersonLastName ) VALUES (N'Salvador', N'Williams'), (N'Lawrence', N'Brown'), ( N'Gilbert', N'Jones'), ( N'Ernest', N'Smith'), ( N'Jorge', N'Johnson') GO INSERT INTO AddressList (PersonId, PostCode, City) VALUES (1, N'07145', N'Philadelphia'), (2, N'68443', N'New York'), (3, N'50675', N'Phoenix'), (4, N'96573', N'Chicago') SELECT * FROM Persons SELECT * FROM AddressList |
今天情境我想要去update Persons這張欄位為null的部分
而資料要從AddressList去設定
這是就會需要透過 update from 搭配join的語法來去做update
由於PersonId對於AddressList來說是FK可關聯的到
藉此用其來join得到要去更新的資料內容
1 2 3 4 5 6 7 8 | UPDATE Per SET Per.PersonCityName=Addr.City, Per.PersonPostCode=Addr.PostCode FROM Persons Per INNER JOIN AddressList Addr ON Per.PersonId = Addr.PersonId |
以上是本次日常小分享
Ref:
How to UPDATE from a SELECT statement in SQL Server
https://www.sqlshack.com/how-to-update-from-a-select-statement-in-sql-server/
SQL UPDATE FROM 的使用方法
http://www.frogjumpjump.com/2011/09/sql-update-from.html
留言
張貼留言