在Oracle 10g中使用左连接删除

在Oracle 10g中使用左连接删除,第1张

概述我有以下代码在MS SQL Server中工作正常: delete grpfrom grpleft join my_dataon grp.id1 = my_data.id1and grp.id2 = my_data.id2and grp.id3 = my_data.id3and grp.id4 = my_data.id4where my_data.id1 is NULL 基本上,我想 我有以下代码在MS sql Server中工作正常:
delete grpfrom grpleft join my_dataon grp.ID1 = my_data.ID1and grp.ID2 = my_data.ID2and grp.ID3 = my_data.ID3and grp.ID4 = my_data.ID4where my_data.ID1 is NulL

基本上,我想删除在grp中可以找到的所有事件,并且在my_data中没有任何等价性.不幸的是,它在Oracle 10g中不起作用.我尝试使用旧的语法左连接(),但它也不工作.喜欢这个:

delete grpfrom grp,my_datawhere grp.ID1 = my_data.ID1 (+)and grp.ID2 = my_data.ID2 (+)and grp.ID3 = my_data.ID3 (+)and grp.ID4 = my_data.ID4 (+)and my_data.ID1 is NulL

如果我没有多个密钥,但是我看不到如何使用我的数据,则IN子句将起作用.那么什么办法呢?

表格和数据:
sql> create table grp (ID1 number null,ID2 number null,ID3 number null,ID4 number null);    table created.sql> create table my_data (ID1 number null,ID4 number null);table created.sql> insert into grp values (1,2,3,4);1 row created.sql> insert into grp values (10,20,30,40);1 row created.sql> insert into grp values (1,40);1 row created.sql> insert into my_data values (1,4);1 row created.sql> commit;Commit complete.

使用in.注意如果子查询中的ID可以为空,请勿使用.不在null不会返回true.

sql> delete grp where (ID1,ID2,ID3,ID4) not in (select ID1,ID4 from my_data);2 rows deleted.sql> select * from grp;       ID1        ID2        ID3        ID4---------- ---------- ---------- ----------         1          2          3          4

使用存在

sql> rollback;Rollback complete.sql> delete grp where not exists (select * from my_data where grp.ID1 = my_data.ID1 and grp.ID2 = my_data.ID2 and grp.ID3 = my_data.ID3 and grp.ID4 = my_data.ID4);2 rows deleted.sql> select * from grp;       ID1        ID2        ID3        ID4---------- ---------- ---------- ----------         1          2          3          4sql>
总结

以上是内存溢出为你收集整理的在Oracle 10g中使用左连接删除全部内容,希望文章能够帮你解决在Oracle 10g中使用左连接删除所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1167578.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存