我有一个表,它计算不同用户在不同对象上发生的一个特定操作:
CREATE TABLE `Actions` (
`object_id` int(10) unsigned NOT NULL,
`user_id` int(10) unsigned NOT NULL,
`actionTime` datetime
);
每次用户执行此操作时,都会插入一行。我可以计算对每个对象执行了多少操作,并按“活动”对对象进行排序:
SELECT object_id, count(object_id) AS action_count
FROM `Actions`
GROUP BY object_id
ORDER BY action_count;
如何将结果限制为前 n 个对象?LIMIT 子句在聚合之前应用,因此会导致错误的结果。该表可能很大(数百万行),我可能需要每分钟计算数十次,所以我想尽可能高效地执行此操作。
编辑:实际上,机器是对的,而我在应用 LIMIT 的时间上是错误的。我的查询返回了正确的结果,但是将它们呈现给我的 GUI 让我失望了……这让这个问题变得毫无意义。对不起!