独家记录MySQL

时间:2011-04-26 17:39:53

标签: mysql

我有许多PageID的ClientID

例如

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

在一个查询中,我想调出只有PageID 3和PageID 2的记录。

所以在我的结果中我应该得到客户端2和3,并且结果中应该省略客户端1 ...这样做的最佳方法是什么?

答案:

SELECT clientID, clientName, pageID, profileTypeID, pageName
FROM  client
GROUP BY
  clientID
HAVING
  COUNT(*) = COUNT(IF(profileTypeID != 1, profileTypeID, NULL))

1 个答案:

答案 0 :(得分:2)

我正在阅读的方式是你想要任何一行,其中给定的ClientID与2或3以外的页面没有关联。

Select ...
From MyTable As T
Where T.PageID In(2,3)
    And Not Exists  (
                    Select 1
                    From MyTable As T2
                    Where T2.ClientID = T.ClientId
                        And T2.PageID Not In(2,3)
                    )