我试图在 GROUP BY 中获取记录的子集,我已经看到了很多疯狂的解决方案,但它们似乎太复杂了,有没有更有效的方法来做到这一点。
SELECT user_id, GROUP_CONCAT(item_id ORDER BY `timestamp`) AS items
FROM wb_user_book_current_item GROUP BY user_id
因此,这将为我返回所有用户的所有当前项目,到目前为止还可以。但我只想要最近的十个项目。添加ORDER BY
到GROUP_CONCAT
帮助中,但它仍然没有给我最后十条记录。
编辑
如果我做这样的事情并硬编码,user_id
那么我可以获得我想要的那个用户的结果,问题是组合它,这样我就不需要硬编码user_id
,例如可以让所有用户最后十个项目
SELECT GROUP_CONCAT(cp2.item_id) AS items
FROM (SELECT cp.user_id, cp.item_id
FROM wb_user_book_current_item cp
WHERE cp.user_id=1 ORDER BY cp.`timestamp`
LIMIT 10) AS cp2
GROUP BY cp2.user_id