[英]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.