繁体   English   中英

当一行数据具有特定值时,如何排除多行数据集? SQL-ORACLE

[英]How do I exclude multi-line set of data when ONE line of data has a specific value? SQL-ORACLE

希望我不会错过已经发布的答案,对我有帮助。 如果原谅我,请原谅我。
假设要获取以下查询结果,我已将Item表内部连接到Item值上的Pricing表。 我当前的查询返回类似于以下内容的内容:

Item______Price
Item1_____Price1  
Item1_____Price2  
Item1_____Price3  
Item2_____Price2  
Item2_____Price3  
Item3_____Price1  
Item3_____Price2  
Item3_____Price3  

我只想返回商品2的SET(两行),因为该商品不存在Price1。 由于Item1和Item3包含上面带有Price1的行,因此我想排除这些项目的所有行。 我想后退

Item______Price  
Item2_____Price2  
Item2_____Price3  

我在脚本上尝试了以下操作,但未返回任何结果。 我不确定自己在做什么错,在编写和理解这些东西时我还是很环保。

并且不存在(SELECT * FROM sqlmgr.PRICE P2 AND(P2.PRICE ='PRICE1')

您需要一个用于NOT EXISTS的相关子查询:

NOT EXISTS (SELECT 1
            FROM sqlmgr.PRICE P2
            WHERE p2.ITEM = p.ITEM AND P2.PRICE = 'PRICE1'
           )

您的版本不返回任何内容,因为其中包含PRICE1记录-如果没有相关段( p2.ITEM = p.ITEM ),它将检查整个表,而不只是检查给定行上的相关项。

请注意, p是外部查询中表的别名,无论如何。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM