数据输入中的错误我需要根据另一个表中的值更改表中的值。解释的最好方法是展示一个“人为的例子”。
Site Table
SiteId SiteName
----------------------
1 Chicago
2 New York
3 Boston
4 Chicago
5 New York
6 Boston
Project Table
ProjectName SiteId
---------------------------
Project #1 1
Project #2 2
Project #3 2
Project #4 3
我需要更新项目表以使用SiteId
表中的“第二”Site
个集合而不是正在使用的集合。例如,我需要项目表看起来像......
ProjectName SiteId
---------------------------
Project #1 4
Project #2 5
Project #3 5
Project #4 6
我最初想到的是自我加入,但我不确定如何区分SiteName
值。我可以使用SiteName
加入,但如何确保分配第二组SiteId
实际列表很长,所以我不能手工完成。
更新:项目名称是唯一的,项目表还有唯一的行标识符。
答案 0 :(得分:0)
试试这个:
UPDATE p
SET p.SiteId=s2.SiteId
FROM Project p
INNER JOIN Site s on s.SiteId=p.SiteId
INNER JOIN (
SELECT SiteName,MAX(SiteId) as SiteId
FROM Site
GROUP BY SiteName) s2 on s2.SiteName=s.SiteName
答案 1 :(得分:0)
UPDATE P
SET SiteId = S.maxSiteId
FROM Project P
INNER JOIN (SELECT MAX(SiteId) AS maxSiteId,
MIN(SiteId) AS minSiteId
FROM Site
GROUP BY SiteName) S
ON P.SiteId = S.MinSiteId