根据另一个表中的数据更新一个表

时间:2013-04-03 04:17:51

标签: sql sql-update

我有2个表,table1包含cols v1v2table2,其中包含cols v3v4

如果table2.v2 table1.v1的匹配值为table2.v3,我想更新UPDATE table1 SET v2 = 99 WHERE exists(select v3 from table2 where table2.v3=table1.v1);

我有以下似乎有效的代码

UPDATE table1
SET v2 = 99
WHERE exists(select v1 from table1
intersect select v3 from table2);

我也尝试过失败的交叉版本(更新两行v2)

{{1}}

5 个答案:

答案 0 :(得分:4)

为此,我们有两个答案

1)内部加入

UPDATE table1
SET v2 = 99
FROM table2 
     INNER JOIN table1
     ON table2.v3= table1.v1

2)使用in子句

 UPDATE table1
 SET v2 = 99
 Where v1 in (Select v3 FROM table2)

答案 1 :(得分:2)

根据我的观点,首先按“如果存在”检查表的值,如下所示,然后应用于更新。

IF EXISTS
(
 select V1 from T2
 where v1 in (select v1 from t2)
)

BEGIN
UPDATE T1
SET v2 = 99
end

干杯.....

答案 2 :(得分:1)

请检查以下是否符合您的要求:

UPDATE table1
SET v2 = 99
WHERE v1 IN (select v3 from table2)

答案 3 :(得分:1)

我认为您不能在此查询中使用intersect,因为您没有在子查询和外部查询之间使用任何连接条件。我确实认为存在期望这种情况。

尝试使用它,

UPDATE table1
SET v2 = 99
WHERE v1 in (select v1 from table1
intersect select v3 from table2);

答案 4 :(得分:0)

使用join来更新表。

UPDATE table2
SET v2 = 99
From table2 Inner Join table1 on  table1.v1=table2.v3