我有一个包含colunm parentId的表(没有约束,可能会发生这个id不存在,因为数据不好!!!)。 我想做两件事 添加一个位列IsChild - 仅当它具有ParentId并且实际存在于我的表中时才包含true 添加位列IsParent - 仅在引用子
时才包含true我想出类似的东西:
UPDATE MyTable
Set IsParent = 1
WHERE Id in (select distinct parentId from MyTable) and IsParent = 0
UPDATE MyTable
Set IsChild = 1
WHERE parentId in (select id from MyTable) and IsChild = 0
但它很慢!!!不知道我们如何才能让它更快
奖金问题:MyTable是一个时态表 如果我们可以立即更新所有字段,而不是创建与语句
一样多的条目答案 0 :(得分:1)
您可以尝试更新加入。如果MyTable
在Id
和parentId
列都有索引,那么这将是理想的。
UPDATE t1
SET IsParent = 1
FROM MyTable t1
INNER JOIN MyTable t2
ON t1.Id = t2.parentId
WHERE isParent = 0
UPDATE t1
SET IsChild = 1
FROM MyTable t1
INNER JOIN MyTable t2
ON t1.parentId = t2.Id
WHERE isChild = 0