我有一张桌子,我正在捕捉反馈链接。插入referal链接时,我有另一个包含主机名的表(主机表中不允许重复。因此,如果它已存在,则从referal主机表中提取ID)。表格结构是:
Referal Table:
referalTableID
referalLink
referalHostID (FK from the referal host table)
Referal Host Table:
referalHostID
ReferalHostName
ReferalHostDisplayName
我的applcaiton中有一个错误,其中referalHostID未被添加到Referal表中。因此,我必须使用正确的ID来手动更新referal表。我需要使用referal主机表中的正确ID更新Referal Table。我开始使用这样的SQL:
;with RHTable as (
Select * from ReferalHostTable)
Update ReferalTable Set referalHostID = (
Select referalHostID from RHTable, ReferalHostTable where ReferalHostTable link '%' + RHTable.ReferalHostName + '%')
这不起作用,因为在子查询中继续选择多个值。我有点理解为什么,但有没有人有更好的解决方案?
谢谢
答案 0 :(得分:1)
应该是类似的东西:
Update r
Set r.referalHostID = h.referalHostID
from ReferalTable r
inner join ReferalHostTable h
on r.referalLink like '%' + h.ReferalHostName + '%'
where r.ReferalHostID is null
or r.referalHostID <> h.referalHostID
答案 1 :(得分:1)
令人担心的是,您使用%
在两侧匹配主机名。这会产生各种误报。例如,meta.stackoverflow.com
将匹配stackoverflow.com
。