我希望我没有错过已发布的有助于我的答案。如果我这样做,请原谅我 让我们假设得到以下查询结果,我有内部将Item表连接到Item值的Pricing表。 我当前的查询返回类似于此的内容:
Item______Price
Item1_____Price1
Item1_____Price2
Item1_____Price3
Item2_____Price2
Item2_____Price3
Item3_____Price1
Item3_____Price2
Item3_____Price3
我想只返回Item 2的SET(两行),因为该Item不存在Price1。由于Item1和Item3包含其上有Price1的行,因此我想排除这些项的所有行。 我想撤回
Item______Price
Item2_____Price2
Item2_____Price3
我在我的脚本上尝试了以下内容,但它没有返回任何结果。我不确定我做错了什么,在写这篇文章和理解这些东西时,我仍然非常环保。
而不是EXISTS( 选择 * 来自sqlmgr.PRICE P2 AND(P2.PRICE =' PRICE1')
答案 0 :(得分:2)
您需要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
是外部查询中表的别名,无论它是什么。