2013-02-28 45 views
0

我現在有2列我的數據庫,我試圖返回在第1列不兩列含有一定價值的所有值:搜索在SQL基於值2列

例如:第1列有9位隨機值,有時會重複。第2列有4種不同的選項; P1,P2,P3,P4。

我試圖只顯示列1中沒有值P4的值在列2中的值。如果他們沒有P4,那麼我希望他們都顯示,但一旦列1值與P4相關聯,我不希望顯示任何第1列值。此過程將繼續貫穿所有第1列值,直到列1中顯示的唯一值是沒有與它們關聯的P4列2值的值。

回答

2

你的意思是這樣的?

SELECT * 
FROM YOUR_TABLE 
WHERE COLUMN1 NOT IN (
    SELECT COLUMN1 
    FROM YOUR_TABLE 
    WHERE COLUMN2 = 'P4' 
) 
+0

這正是我的意思。非常感謝 – 2013-02-28 02:44:05

0

這是不是僅僅是

SELECT column1 FROM <table> WHERE column2 != 'P4' 
0

這是你在套中尋找集的查詢的一個例子 - 也就是說,套COLUMN2的列1的值範圍內。我更喜歡使用group byhaving這些查詢:

select column1 
from t 
group by column1 
having sum(case when column2 = 'P4' then 1 else 0 end) = 0 

要獲得所有的值,你會加入回原來的表:

select t.* 
from t join 
    (select column1 
     from t 
     group by column1 
     having sum(case when column2 = 'P4' then 1 else 0 end) = 0 
    ) c1 
    on t.column1 = c1.column1 
+0

這超出了我的理解範圍,但第一個答案適用於我。謝謝! – 2013-02-28 02:45:57