2013-04-03 169 views
1

我有2个表,table1与列v1v2table2与列v3v4根据来自另一个表的数据更新一个表

我想更新table2.v2如果table1.v1table2.v3中具有匹配的值。

我有下面的代码,似乎工作

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

我还与失败(更新V2的两行)的交叉版本,试图

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

回答

1

我不认为你可以在此查询中使用相交,因为你还没有使用子查询和外查询之间的任何加盟条件。我确实认为Exists期待这种状况。使用这种

尝试,

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

请检查下面是否是你的要求:

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

使用连接来更新表。

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

由于某种原因,这个解决方案没有工作对我来说,也许这是因为我使用的是Oracle?错误从命令行中的第31行开始:UPDATE TABLE1 SET v2 = 99 FROM table2 INNER JOIN table1 ON table2.v3 = table1.v1命令行错误:33列:1错误报告:SQL错误:ORA-00933:SQL命令不正确结束00933. 00000 - “SQL命令未正确结束”*原因:*操作: – Cici

4

为此,我们有两个答案

1)有内加入

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

2)随着第

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

shankar bhau,ata kar绑定窗格matdan kara,+1 mazyakadun ... jai maharashtra。 – Freelancer

+0

由于某种原因解决方案1没有为我工作,也许这是因为我使用的是oracle?在命令开始于31行错误: UPDATE table1的 SET V2 = 99 FROM table2中 INNER在命令行JOIN table1的 ON table2.v3 = table1.v1 错误:33柱:1 错误报告: SQL错误: ORA-00933:SQL命令未正确结束 00933. 00000 - “SQL命令未正确结束” *原因: *操作: – Cici

+0

是在Oracle中给出了这种类型的错误。在oracle中,你可以使用第二个选项。对于这种类型的错误,请通过URL:http://www.dba-oracle.com/t_ora_00933_sql_command_ended.htm –

2

由于根据我的观点首先检查'If Exists'的表格值如下,并应用于更新。

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

BEGIN 
UPDATE T1 
SET v2 = 99 
end 

干杯.....

+0

ek number mahesh dada – Freelancer

+0

@Freelancer,谢谢你的好友。 –

+0

tumach nehmi swagat aahe [永远欢迎你]。 – Freelancer

相关问题