我有以下表格:
和
我最近添加了[History Table ID]列,并在History表中添加了一个Foreign Key Reference。必须发生的是,必须使用History表的ID值更新[History Table ID]列的值。我已经能够使用2个条目来正确使用,条目在历史记录表的“描述”列中具有Diary表的ID。下面的查询实现了:
Update Diary
SET [History Table ID] = History.ID
from History with (nolock)
WHERE [Lookup Table HA] = 7
and [Lookup Table HAS] = 19
and Description LIKE 'Diary item (%'
and PATINDEX('%)%', Description) > 13
and Dairy.ID = SUBSTRING(Description, 13, PATINDEX('%)%', Description)-13)
有没有其他方法可以更新?我无法理解这一点。
提前致谢。
更新
请参阅下面的更新表格镜头:这是我更新和加入的问题所在:
答案 0 :(得分:0)
也许这不正确,但看起来Global Id
(和Issue number
)连接两个表。如果是这样,你可以这样做:
Update Diary
SET [History Table ID] = History.ID
from History with (nolock)
WHERE Diary.[Global ID] = History.[Global ID] and
Diary.[Issue number] = History.[Issue number];
否则,您需要弄清楚将History
中的一条记录连接到Diary
表中的记录的逻辑。
编辑:
让我假设你想要多个匹配时最大的历史ID:
Update Diary
SET [History Table ID] = h.ID
from (select [Global ID], [Issue number], max(id) as maxid
from History with (nolock)
group by [Global ID], [Issue number]
) h
WHERE Diary.[Global ID] = h.[Global ID] and
Diary.[Issue number] = h.[Issue number];
答案 1 :(得分:0)
正如您在评论中提到的那样,“IssueNumber将始终相同.BlobalId在两个表中也将始终相同。”所以这样可以正常工作:
UPDATE Diary
SET [History Table ID] = History.ID
FROM History WITH (NOLOCK)
WHERE Diary.[Global ID] = History.[Global ID]
AND Diary.IssueNumber = History.IssueNumber