我有许多PageID的ClientID
例如
ClientID 1 PageID 3
ClientID 1 PageID 2
ClientID 2 PageID 3
ClientID 3 PageID 3
在一个查询中,我想要仅显示只有PageID 3的记录。
所以在我的结果中我应该得到客户端2和3,客户端1应该从结果中省略...最好的方法是什么?
答案 0 :(得分:2)
试试这个 -
SELECT clientid FROM
clients
GROUP BY
clientid
HAVING
COUNT(*) = COUNT(IF(PageID = 3, PageID, NULL));
答案 1 :(得分:0)
你可以试试这样的......
SELECT DISTINCT ClientID
FROM table
WHERE PageID = 3
AND ClientID NOT IN ( SELECT DISTINCT ClientID FROM table WHERE PageID != 3 )
或者这......
SELECT DISTINCT a.ClientID
FROM table a
JOIN ( SELECT ClientID, COUNT(*) AS total FROM table GROUP BY ClientID ) b ON a.ClientID = b.ClientID
WHERE b.total = 1
AND a.PageID = 3
答案 2 :(得分:0)
不工作请参阅下面的评论!
SELECT ClientID FROM table WHERE PageID=3 GROUP BY ClientID HAVING count(ClientID)=1
这个想法,尝试一下。
希望得到这个帮助。