Cette requête échoue quand j'ajoute la ligne indiquée ...besoin d'aide avec le groupe mysql simple, par requête
Select Companyid, count(*) as cnt
from mytable
where State is not null
and cnt = 1 <------------------------- FAIL
group by CompanyID
Toute façon de le faire?
Voici un fond de longue haleine si ça vous aidera ....
J'ai une requête de table.
Voici un échantillon de la table:
CompanyID, State
1,OH
1,IL
1,NY
2,IL
3,NY
3,OH
4,NY
5,CA
5,WA
Je veux une requête qui va retourner quelque chose comme ceci:
2,IL
4,NY
J'ai ce jusqu'à
Select Companyid, count(*) as cnt
from mytable
where State is not null
group by CompanyID
Cette me donne le nombre de dossiers pour chaque entreprise.
IE:
1,3
2,1
3,2
4,1
5,2
Maintenant, je veux filtrer la liste ci-dessus pour seulement deux enregistrements avec un résultat.
J'ai essayé d'ajouter une autre clause where, mais il a échoué:
Select Companyid, count(*) as cnt
from mytable
where State is not null
and cnt = 1 <-------------------- FAIL
group by CompanyID
Vous ne pouvez pas utiliser les résultats de la fonction d'agrégation dans une clause 'where'. O WH est appliqué au moment de la récupération. Mais au point, les résultats de "count" ne sont pas encore disponibles. C'est là que 'HAVING' entre en jeu, ce qui ressemble à 'where', mais est appliqué comme dernière étape de la requête, juste avant que les résultats ne soient retournés. –