这就是我所面临的困境:
table1
包含employee employee employeeID
table2
列uniqueEmployeeName
,id
table1
对employeeID
的主要密钥table2
id
有外键约束。
employee
中的table1
列可以匹配uniqueEmployeeName
中table2
的其中一个值
{li} employeeID
中的table1
列目前为空,我希望根据table2
中id
的匹配employee
列更新table1
{1}} uniqueEmployeeName
中的table2
。{/ li>
这是我到目前为止所做的:
update table1
set table1.employeeID = (select distinct id
from table2
where uniqueEmployeeName = table1.employee)
问题是查询只是无休止地运行,所以我不确定我的查询出错了我想做什么。任何人都可以看到我的逻辑出错了吗?
这是前后应该是什么样子的例子:
在:
table1 table2
employee employeeID uniqueEmployeeName id
bob peter 1
saget pipper 2
saget 3
bob 4
在:
table1 table2
employee employeeID uniqueEmployeeName id
bob 4 peter 1
saget 3 pipper 2
saget 3
bob 4
答案 0 :(得分:0)
如果table1中有太多记录,则可以在update语句中使用TOP()。内部联接也应该有所帮助。
declare @rows int
set @rows = 1
while @rows > 0
BEGIN
update top (1000) table1
set employeeID = table2.id
from table2 inner join table1 on table2.uniqueEmployeeName = table1.employee
where table1.employeeID is null
-- or table1.employeeID = ""
set @rows = @@ROWCOUNT
END