[TSQL] 使用 UPDATE FROM INNER JOIN 子句來變更資料
這是Dotjum今天遇到的問題,有一個Table最近要新增一個欄位進去,
新增之後當然預設都是Null,而這個master的Table所新增的欄位,
會從Detail的Table中,對應 UrlID,取出一筆最先處理的代號,在進行更新到Master的新增欄位。
1.目前Master 的Table 缺的欄位
2.Detail 的Table 取出最先新增的代號
SELECT UrlID,blogID FROM dbo.BookmarkLinks WHERE UrlID = 8344
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
結果如下圖
參考資源:
[TSQL]查詢指定分類下最新一筆的資料
http://technet.microsoft.com/zh-tw/library/ms191492(SQL.100).aspx