admin

在Oracle sql查询中使用“ zhoin”删除

sql

我对OracleSQL查询并不十分了解,因此在删除表中的某些行时遇到了一个问题,该行必须满足一个约束,该约束包括另一个(联接)表的字段。换句话说,我想编写一个查询来删除包括JOIN的行。

在我的情况下,我有一个表ProductFilters和另一个Products连接在字段上的表ProductFilters.productID = Products.ID。我想从大于或等于200的行中删除行,ProductFilters并且ID它们引用的产品具有名称“
Mark”(名称是“产品”中的一个字段)。

我想首先被告知Oracle中的Delete Query是否可以接受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'
);

阅读 247

收藏
2021-05-10

共1个答案

admin

根据我在上面的评论中链接的答案,此方法应该有效:

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'
  )
);
2021-05-10