mySQL独占记录

mySQL独占记录,mysql,Mysql,我有许多clientID到许多pageID 例如 客户ID 1页面ID 3 客户ID 1页面ID 2 客户ID 2页面ID 3 客户ID 3页面ID 3 在查询中,我想调出只有PageID为3的记录 所以在我的结果中,我应该得到客户机2和3,客户机1应该从结果中忽略。。。最好的方法是什么?你可以试试这样的 SELECT DISTINCT ClientID FROM table WHERE PageID = 3 AND ClientID NOT IN ( SELECT DISTINCT Clien

我有许多clientID到许多pageID

例如

客户ID 1页面ID 3
客户ID 1页面ID 2
客户ID 2页面ID 3
客户ID 3页面ID 3

在查询中,我想调出只有PageID为3的记录


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

你可以试试这样的

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

不工作请参见下面的评论

SELECT ClientID FROM table WHERE PageID=3 GROUP BY ClientID HAVING count(ClientID)=1
这就是我的想法,尝试一下

希望有帮助。

试试这个-

SELECT clientid FROM
  clients
GROUP BY
  clientid
HAVING
  COUNT(*) = COUNT(IF(PageID = 3, PageID, NULL));

您只是在限制相同PageID中存在重复项的可能性,而不是在其他页面中删除重复项。