加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle SQL – 筛选出包含具有特定值的行的分区或行组

发布时间:2021-03-30 21:23:01 所属栏目:站长百科 来源:网络整理
导读:我正在尝试解决以下问题:数据在表中组织,其中列X作为信息的外键(它是标识此表中的一组行的ID,它们属于一个捆绑包,由特定的所有者拥有)另一个表中的实体).因此,X的每个不同值都有多个与之关联的行.我想过滤掉在Q列中包含与其相关联的行的X的所有不同值,其中

我正在尝试解决以下问题:数据在表中组织,其中列X作为信息的外键(它是标识此表中的一组行的ID,它们属于一个捆绑包,由特定的所有者拥有)另一个表中的实体).因此,X的每个不同值都有多个与之关联的行.我想过滤掉在Q列中包含与其相关联的行的X的所有不同值,其中包含值“ABC”.

数据看起来像这样:

Column X   Column Q
--------   ---------
123        ABC
123        AAA    
123        ANQ
456        ANQ
456        PKR
579        AAA
579        XYZ
886        ABC

查询应该返回“456”和“579”,因为X的这两个不同的值在Q列中没有包含值“ABC”的行.

我正在考虑使用减函数(选择不同的X减去(选择不同的X,其中Q =“ABC”)),因为我想要的只是X的不同值.但我想知道是否有更有效的方法这样做可以避免子查询?例如,如果我可以在X上对表进行分区并抛出Q中具有值“ABC”的行的每个分区?

解决方法

这应该工作:

SELECT DISTINCT t.ColX
FROM mytable t
  LEFT JOIN mytable t2 on t.colx = t2.colx and t2.colq = 'ABC'
WHERE t2.colx IS NULL

这是SQL Fiddle.

祝好运.

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!