MySQL查询已经是GROUPed和ORDERed:如何在GROUPs内部进行ORDER?

时间:2011-07-17 01:51:25

标签: mysql sql greatest-n-per-group

我有这个问题:

SELECT id_user, COUNT(*) as count
FROM posts
GROUP BY id_user
ORDER BY COUNT(*) DESC

它给出了按事件排序的id_user,以及每次出现的次数。 我可以在同一个请求中获取每个'id_user'的最新帖子吗?即我也想选择最后一个'帖子',但是当我做

SELECT id_user, post, COUNT(*) as count

'post'中的值不是最后一个(也不是第一个;实际上我不知道如何排序组)。我应该再运行一次查询吗?

2 个答案:

答案 0 :(得分:3)

我相信你可以通过max(post_id) last_post添加select来实现这一目标。

答案 1 :(得分:1)

这应该在一个查询中完成:

SELECT 
  p.id_user,
  ap.post AS last_post,
  COUNT(*) as count
FROM 
  posts p
  JOIN posts ap on (
    p.id_user = ap.id_user
    AND ap.post_id = (
      SELECT MAX(post_id) FROM posts ip WHERE p.id_user = ip.id_user
    )
GROUP BY 
  p.id_user,
  ap.post
ORDER BY 
  COUNT(*) DESC