MySQL запрос уже GROUPed и ORDERed: как сделать заказ внутри GROUP? - PullRequest
1 голос
/ 17 июля 2011

У меня есть этот запрос:

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

значение в «посте» не последнее (и не первое; на самом деле я не знаю какгруппы заказаны).Должен ли я выполнить другой запрос?

Ответы [ 2 ]

3 голосов
/ 17 июля 2011

Я считаю, что вы можете сделать это, добавив max(post_id) last_post к вашему select.

1 голос
/ 17 июля 2011

Это должно быть сделано в одном запросе:

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
...