我有2个以下结构的表
表1
Id(长),Name(nvarchar),ValuesExist(位)
表2
Id(长),Table1Id(长),值(int)
在Table.Id和Table2.Table1Id
上使用外键约束现在我想根据以下逻辑更新Table1
如果(Table2中的值对应于行Table1和Atleast one,值为> 0)
然后 Table1.ValuesExist = 1
else Table1.ValuesExist = 0
我已经查看并尝试了很多关于如何使用join更新列的示例,但是cudnt找到了通过逻辑或某些ComputedColumn进行更新的任何示例
答案 0 :(得分:1)
UPDATE T1
SET ValuesExist =
CASE
WHEN T2.Value > 0 THEN 1
ELSE 0
END
FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.Id = T2.Table1Id
答案 1 :(得分:0)
这是一种方法。它使用update
中的相关子查询,并且非常接近您所说的问题:
update table1 t1
set ValuesExist = (case when exists (select 1
from Table2 t2
where t2.Table1Id = t1.Id and t2.Value > 0
)
then 1 else 0
end);
如果您有Table2(Table1Id, Value)
的索引,这将表现最佳。