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



我希望我没有错过已经发布的对我有帮助的答案。如果我这样做了,请原谅我。
假设要获得以下查询结果,我已经将项目表内部连接到项目值上的定价表。我当前的查询返回类似于以下内容的内容:

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  

我已经在我的脚本上尝试了以下内容,但它没有返回任何结果。我不确定我做错了什么,在写作和理解这些东西方面,我仍然很绿色。

并且不存在 ( 选择* 来自 sqlmgr。价格 P2 和(P2.价格 = '价格1')

您需要

一个相关的子查询来获取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 是外部查询中表的别名,无论它是什么。

最新更新