我有2个表,table1
包含cols v1
和v2
,table2
,其中包含cols v3
和v4
。
如果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}}
答案 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