【发布时间】:2014-01-13 08:16:55
【问题描述】:
我有以下查询,据说它会为每个 update_id 获取最新的 3 个 cmets。它似乎有效,直到我发现一个逻辑问题,即不管更新它都会获得最新的 3 cmets;它应该为每个 update_id 获取最新的 3 cmets。我怎样才能做到这一点?显然 limit(3) 是错误的。
SELECT `comms` . * , `usr`.`name`
FROM (
`comms`
)
JOIN `users` AS usr ON `usr`.`id` = `comms`.`user_id`
WHERE `update_id`
IN (
'1451', '1416', '1186', '1157', '1150', '1122', '1057', '914', '850', '816', '794', '790', '749', '746', '745', '744', '740'
)
ORDER BY `id` DESC
LIMIT 3
【问题讨论】:
-
如果你想要三个结果 LIMIT 3 怎么错了?
-
因为我有 10 个更新,所以最新的 3 个将乘以 30 而不是 3。我想显示每个 update_id 的最新 3 个。
-
尝试 ORDER BY
update_idDESC 而不是id
标签: mysql sql select sql-order-by greatest-n-per-group