209 votes

MySQL - Utilisation de COUNT(*) dans la clause WHERE

J'essaie d'accomplir ce qui suit dans MySQL (cf. pseudo code)

SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC

Existe-t-il un moyen de faire cela sans utiliser un (SELECT...) dans la clause WHERE, car cela semble être un gaspillage de ressources.

Toute aide est appréciée.

Gracias.

356voto

Ali Ersöz Points 6699

Essayez ceci ;

select gid
from `gd`
group by gid 
having count(*) > 10
order by lastupdated desc

32voto

Greg Points 132247

Je ne suis pas sûr de ce que vous essayez de faire... peut-être quelque chose comme

SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC

24voto

Winston Smith Points 12029
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;

EDIT (si vous voulez juste les gids) :

SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC

21voto

Juste la version académique sans avoir de clause :

select *
from (
   select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;

15voto

sme Points 1992

Essayez

SELECT DISTINCT gid
FROM `gd`
group by gid
having count(*) > 10
ORDER BY max(lastupdated) DESC

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X