SQL COLUMN更新

时间:2015-06-18 14:43:06

标签: sql sql-server sql-server-2008

Select * from a 
inner join b 
on a.1=b.2

update table a 
set a.2=b.3 
from a 
inner join b 
on a.1=b.2

我正在尝试在SQL中更新表中的列。

最初我使用需要更新行的连接从列中选择数据(计数将为40000)。然后我运行update语句以使用新值更新列(更新计数2000)。来自连接的计数总是超过更新计数。

当我返回并执行连接时,我将计为零。

我无法理解为什么我会有所不同。有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:0)

正如评论中所述,问题是b中的多个值与a中的一个或多个值匹配。

如果您想要相同的计数,请尝试运行以下查询:

Select count(*)
from a 
where exists (select 1 from b where a.1 = b.2);

然后:

update table a 
    set a.2 = b.3 
    where exists (select 1 from b where a.1 = b.2);

如果查询之间的表没有变化,那么它们应该报告相同的行数。