2011-04-26 3 views
0

J'ai beaucoup de ClientID à beaucoup de pageidsEnregistrements exclusifs mySQL

Par exemple.

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

Dans une requête que je veux aborder le dossier avec seulement PageID 3 exclusivement.

Donc dans mon résultat je devrais obtenir le client 2 et 3 et le client 1 devrait être omis des résultats ... Quelle est la meilleure façon de le faire?

Répondre

2

Essayez celui -

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

Vous pouvez essayer quelque chose comme ça ...

SELECT DISTINCT ClientID 
FROM table 
WHERE PageID = 3 
AND ClientID NOT IN (SELECT DISTINCT ClientID FROM table WHERE PageID != 3) 

Ou cette ...

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 
0

Ne travaillez pas voir le commentaire ci-dessous!

SELECT ClientID FROM table WHERE PageID=3 GROUP BY ClientID HAVING count(ClientID)=1 

Cette idée, essayez quelque chose.

Espérons cette aide.

+0

vous êtes juste limitant la possibilité pour les doublons dans le même PageID au lieu de les supprimer si elles sont dans les autres pages aussi. – judda

+0

oh! C'est vrai. Mon erreur. – Riba

Questions connexes