набора данных:Сортировка данных в группах
id uid activity postid
1 20 A 1
2 20 A 1
3 6 A 1
4 3 A 1
5 6 A 1
6 13 A 1
7 13 B 1
8 18 B 1
9 18 B 1
10 1 A 1
Текущие результаты:
id uid uid_list groupCount activity postid
9 18 18,13 3 B 1
1 20 1,13,6,3,20 7 A 1
Ожидаемые результаты:
id uid uid_list groupCount activity postid
9 18 18,13 3 B 1
10 1 1,13,6,3,20 7 A 1
Запрос У меня есть:
SELECT
id,
uid,
GROUP_CONCAT(DISTINCT uid ORDER BY id DESC) as uid_list,
COUNT(*) as groupCount,
activity,
postid
FROM (
SELECT *
FROM `user_activities`
ORDER BY id DESC) as tbl
GROUP BY
activity, postid
ORDER BY
id DESC
Я хочу группе activity
и postid
, имея результат в порядке убывания id
. И хотите иметь последние id
и uid
для каждой группы. Я не понимаю, почему этот запрос не возвращает ожидаемый результат.
Нет, чувак, я не могу получить 'MAX (uid)', мне нужен последний 'uid' (последний по' id'). И никакой 'uid' не увеличивается, это FK из другой таблицы. – Shaharyar
Мой плохой. Обновлен ответ. –
Ну его хороший подход и решает проблему. Но мне любопытно, почему он не сортирует строки перед группировкой? Даже после моего подзапроса подход их сортировать? – Shaharyar