2012-06-26 5 views
0
> select * from site, count(*) as count 
> from myTable 
> where year(created_at) = 2012 
> group by site order by count DESC limit 10000 

Je sélectionne une quantité massive de données qui a essentiellement une queue vraiment longue et inutile.instruction Pesky IF/THEN dans la requête mysql

Je suis en train de couper cette requête il ne montre rien de moins de 500 résultats.

Toutes les recherches sur Google, je l'ai fait pour la solution à cela n'a pas été très utile.

Toute idée comment construire la requête pour limiter ces données aux seuls sites de spectacle avec un nombre de 500 ou plus?

+0

Vous pouvez filtrer les valeurs groupées avec 'having':' select count (*) à partir de l'onglet où y group by z étant compté (*)> 500' – arnep

+0

@arnep J'ai 'query = (" select site, count (*) comme compte depuis myTable où year (created_at) = 2012 groupe par site ayant compte (*)> 500 ordre par compte DESC "). to_a' et il ne filtre rien en-dessous de 500 pour une raison quelconque –

Répondre

0
select 
    site , 
    count(*) as val 
from 
    myTable 
where 
    year(created_at) = 2012 
and 
    val > 500 
group by 
    site 
HAVING COUNT(*) > 500 

modifier

Points aller à Sean - je me suis aperçu que j'utilisais syntaxe MSSQL, pas MySQL

également - se référer à FIlter by COUNT(*) ? - MYSQL

+0

Cela ne fonctionne pas pour quelque raison. Je reçois encore tous les résultats –

2
select * from site, count(*) as count 
from myTable 
where year(created_at) = 2012 
group by site having count>500 order by count DESC limit 10000 

Vous voulez « avoir count > 500 "là si vous voulez seulement sélectionner les lignes avec plus de 500 résultats.

OU ne fonctionne pas sur des fonctions d'agrégation.

+0

longue queue Sean, merci pour votre réponse. Je l'ai copié exactement et ça ne marche pas pour une raison quelconque ... Je ne sais pas pourquoi. –

+0

Quelle est l'erreur? –

+0

'Vous avez une erreur dans votre syntaxe SQL; vérifier le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'count (*) comme compte de myTable où year (created_at) = 2012 groupe par site havin' à la ligne 1' quand je fais le requête dans Sequel Pro –