当前位置: 首页 > 面试题库 >

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

臧曜瑞
2023-03-14
问题内容

我对Oracle
SQL查询并不十分了解,因此在删除表中的某些行时遇到了一个问题,该行必须满足一个约束,该约束包括另一个(联接)表的字段。换句话说,我想编写一个查询来删除包括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'
);

问题答案:

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

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'
  )
);


 类似资料:
  • 在Crystal Reports中,我使用以下查询(针对Oracle数据库)为报表中的单个字段生成数据: 这可以很好地工作,并基于提供的{HB_As_At_Date}(the{?}语法是Crystal将参数值嵌入SQL(SQL)的方法。不过,上述查询的内容不是我的问题——我想做的是在几个不同的日期重复运行它,并将输出输入Crystal以供在报告中使用。 假设我希望在9月的每个星期一运行这个查询,我

  • 问题内容: 由于无法控制的原因,我需要连接两个表,并且需要空值来进行匹配。我能想到的最好的选择是吐出一个UUID并将其用作我的比较值,但这看起来很难看 我该如何做得更好?如果重要的话,这是在Oracle上进行的,并且上下文是一个应用程序,在该应用程序中必须将一批用户上载的数据与一批现有数据进行比较,以查看是否有任何行匹配。回想起来,我们应该阻止任何一个数据集中的连接列包含空值,但是我们没有,现在必

  • 问题内容: 我正在尝试从名为user_enrole的表中删除所有记录。 我认为查询的语法没有错,但这给了我错误提示 #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在第1行的’* FROM user_enrole’附近使用正确的语法 我已经仔细检查了我的语法,但我无法找出问题出在哪里,请有人指出。 是由于该表与使用表之间的关系而发生的还是什么? 问题答案: 您无需在删

  • 问题内容: 有人可以帮助我了解此查询的问题吗: 问题答案: 之所以无法使用,是因为MySQL不按照您尝试的方式在delete语句中支持连接语法。 使用: …或使用EXISTS:

  • 如果我通过“.ASC”删除组的第二部分,但当我这样做时,数据是不正确的。它为什么要这样做,我如何修复它,并且仍然按照表1分组,除了表3之外,还要先按表1分组。 先进的谢谢! 我有时间接受完整的查询,并将表拉到一个通用表单,以便在没有客户端数据的情况下发布。我能够将模式添加到sqlfiddle中,但如果没有我使用的数据,结果可能会有所不同,而且由于字符的限制,我甚至无法将表前的100行(共7行)放入

  • 我正在尝试删除数据库中的一条记录,该记录将更新两个不同表中的值。我有一个学生桌和一个注册桌。如果删除了学生ID(和其他信息),则应该自动删除学生表和注册表中学生ID相同的信息。如果我只是从Student表中删除行,sql会尝试工作,但它说它不能工作,因为该值也包含在Enroll表中。这里是我有的整个删除按钮的代码。我总是收到一条错误消息,说要指定要删除的表,所以我猜语法是错误的,我是如何添加第二个