Oracle SQL – 筛选出包含具有特定值的行的分区或行组
发布时间:2021-03-30 21:45:49 所属栏目:站长百科 来源:网络整理
导读:我正在尝试解决以下问题:数据在表中组织,其中列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. 祝好运. (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |