在Oracle sql Query中使用“Join”进行删除
发布时间:2020-12-12 13:55:09 所属栏目:百科 来源:网络整理
导读:我不太熟悉Oracle Sql Queries,所以我在删除表中的一些行时遇到一个问题,这些行必须满足包含另一个(join)表的字段的约束。换句话说,我想写一个查询来删除包括JOIN在内的行。 在我的情况下,我有一个表ProductFilters和另一个表产品加入领域ProductFilters
我不太熟悉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' ) ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |