簡體   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