我有许多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))
答案 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)
)