使用“内部联接”

时间:2016-06-20 14:38:31

标签: sql oracle join

所以我搜索了高低,尝试在此论坛上使用的其他提示无济于事。

因此尝试在Oracle SQL Developer(v3.2.20.09)中使用内部联接删除

表I我希望从(表1,列名Column1)中删除,其中数据与'Table2中的列'Column2'匹配。

我知道Oracle / Microsoft SQL之间存在一些差异,尝试过多次查询,如下所示,略有不同(使用开启/关闭括号,内部联接,WHERE EXISTS,WHERE(选择))。 尝试:

 delete from table2 where 
 exists (select column1 from table1);

 delete from table2, 
 inner join table1 on table2.column2 = table1.column1;

我写的代码有什么问题?

2 个答案:

答案 0 :(得分:3)

EXISTS版本如下所示:

delete from table2
where exists (select *
              from table1
              where table1.column1 = table2.column2);

或者,您可以使用IN子句

delete from table2
where column2 in (select column1
                  from table1);

答案 1 :(得分:3)

如果您尝试从table1删除,那么这是必须在delete子句中使用的表名,而不是table2

delete table1 t1
 where exists (select null
                 from table2 t2
                where t2.column2 = t1.column1)