微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Oracle sql Query中使用“Join”进行删除

我不太熟悉Oracle sql Queries,所以我在删除表中的一些行时遇到一个问题,这些行必须满足包含另一个(join)表的字段的约束。换句话说,我想写一个查询删除包括JOIN在内的行。

在我的情况下,我有一个表ProductFilters和另一个表产品加入领域ProductFilters.productID = Products.ID。我想删除ID高于或等于200的ProductFilters中的行,并且它们引用的产品名称为“Mark”(名称是Product中的一个字段)。

如果在Oracle中的删除查询中JOIN是可以接受的,我最初会被通知。如果不是我应该如何修改查询以使其工作,因为在该表单上,我收到一个错误

DELETE From PRODUCTFILTERS pf 
where pf.id>=200 
And pf.rowid in 
(
     Select rowid from PRODUCTFILTERS 
     inner join PRODUCTS on PRODUCTFILTERS.PRODUCTID = PRODUCTS.ID 
     And PRODUCTS.NAME= 'Mark'
);
根据我在上述评论中所提到的答案,这应该是有效的:
delete from
(
select pf.* From PRODUCTFILTERS pf 
where pf.id>=200 
And pf.rowid in 
  (
     Select rowid from PRODUCTFILTERS 
     inner join PRODUCTS on PRODUCTFILTERS.PRODUCTID = PRODUCTS.ID 
     And PRODUCTS.NAME= 'Mark'
  )
);

要么

delete from PRODUCTFILTERS where rowid in
(
select pf.rowid From PRODUCTFILTERS pf 
where pf.id>=200 
And pf.rowid in 
  (
     Select PRODUCTFILTERS.rowid from PRODUCTFILTERS 
     inner join PRODUCTS on PRODUCTFILTERS.PRODUCTID = PRODUCTS.ID 
     And PRODUCTS.NAME= 'Mark'
  )
);

原文地址:https://www.jb51.cc/oracle/205914.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐