J'ai une table qui compte les occurrences d'une action spécifique par différents utilisateurs sur différents objets:MySQL: requête agrégations top n
CREATE TABLE `Actions` (
`object_id` int(10) unsigned NOT NULL,
`user_id` int(10) unsigned NOT NULL,
`actionTime` datetime
);
Chaque fois qu'un utilisateur effectue cette action, une ligne est insérée. Je peux compter combien d'actions ont été effectuées sur chaque objet, et des objets de commande par « activité »:
SELECT object_id, count(object_id) AS action_count
FROM `Actions`
GROUP BY object_id
ORDER BY action_count;
Comment puis-je limiter les résultats aux n objets top? La clause LIMIT est appliquée avant l'agrégation, ce qui entraîne des résultats erronés. La table est potentiellement énorme (des millions de lignes) et j'ai probablement besoin de compter des dizaines de fois par minute, donc je voudrais faire ceci aussi efficace que possible.
edit: En fait, Machine a raison, et je me suis trompé sur l'heure à laquelle la limite est appliquée. Ma requête a renvoyé les résultats corrects, mais l'interface graphique qui me les a présentés m'a décontenancée ... cela rend inutile cette question. Pardon!