2015-09-04 59 views
1

我有這張表。選擇具有相同編號但不同於其他列的值

擁有:

Pid Cid 
100 1 
100 2 
200 1 
200 3 
300 4 
400 1 
400 4 
400 5 
500 2 
500 4 

,我需要選擇PID僅適用於誰擁有CID = 1而不是CID = 2 輸出應該是:

pid 
200 
400 

我的查詢是:

SELECT Pid 
FROM OWNS 
WHERE Cid = 1 and Cid <> 2 

,但我得到的結果:

pid 
100 
200 
400 
+0

你的期望是錯誤的。 100,200和400有cid = 1的行。此外,Cid <> 2與cid = 1組合也沒有意義,因爲1總是<> 2編輯:我的錯。問題不對。 – frlan

回答

1

嘗試

SELECT distinct Pid 
FROM OWNS 
WHERE 
    Pid not in (select Pid from OWNS where Cid = 2) 
AND CID = 1; 
+0

已編輯。請現在嘗試。 –

+0

太棒了!謝謝 –

0

或者這樣:

SELECT `pid` 
FROM `OWNS` 
WHERE `cid` = '1' 
    AND `pid` in (SELECT `pid` 
        FROM `OWNS` 
        WHERE `cid` != '1' AND `cid` != '2') 
相關問題