[TSQL] 使用 UPDATE FROM INNER JOIN 子句來變更資料

[TSQL] 使用 UPDATE FROM INNER JOIN 子句來變更資料

這是Dotjum今天遇到的問題,有一個Table最近要新增一個欄位進去,
新增之後當然預設都是Null,而這個master的Table所新增的欄位,
會從Detail的Table中,對應 UrlID,取出一筆最先處理的代號,在進行更新到Master的新增欄位。
1.目前Master 的Table 缺的欄位

  
image 

2.Detail 的Table 取出最先新增的代號
SELECT UrlID,blogID FROM  dbo.BookmarkLinks WHERE UrlID = 8344
image 

3.先透過查詢 Detail Table 最先新增的代號,在跟Master Table INNER JOIN,
  在做 Update 的命令。
UPDATE BookmarkUrls
SET BookmarkUrls.BlogID = D.BlogID
 FROM
 dbo.BookmarkUrls INNER JOIN
(
-- 找出Detail Table 最先新增的那筆資料
SELECT  LinkID,UrlID,BlogID  FROM dbo.BookmarkLinks  as i
WHERE  LinkID IN
    (
    SELECT MIN(LinkID )
    FROM BookmarkLinks AS i2      
    GROUP BY(UrlID)     
    )
) AS D
ON BookmarkUrls.UrlID = D.UrlID

結果如下圖

image 

參考資源:

[TSQL]查詢指定分類下最新一筆的資料
http://technet.microsoft.com/zh-tw/library/ms191492(SQL.100).aspx