mySQL独家记录

时间:2011-04-26 03:47:50

标签: mysql

我有许多PageID的ClientID

例如

ClientID 1 PageID 3
ClientID 1 PageID 2
ClientID 2 PageID 3
ClientID 3 PageID 3

在一个查询中,我想要仅显示只有PageID 3的记录。

所以在我的结果中我应该得到客户端2和3,客户端1应该从结果中省略...最好的方法是什么?

3 个答案:

答案 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

这个想法,尝试一下。

希望得到这个帮助。