select 个具有相同 ID 但在其他列中不同的值

select values with same id but different in other column

我有这个 table。

拥有:

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

我只需要select Cid = 1 但不是 Cid = 2 的 Pid 输出应该是:

pid
200
400

我的查询是:

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

但我得到结果:

pid
100
200
400

尝试

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

或者这样:

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