2016-06-30 5 views
0
+----+----------+-------------+-----------+---------------------+---------+---------------------------+ 
| id | action | object_type | object_id | created_at   | user_id | object_title    | 
+----+----------+-------------+-----------+---------------------+---------+---------------------------+ 
| 1 | shared |   0 |   1 | 2016-04-22 06:13:16 |  1 | 5 highest buildings  | 
| 2 | liked |   0 |   1 | 2016-04-22 06:15:02 |  1 | 5 highest buildings  | 
| 3 | liked |   0 |   1 | 2016-05-21 19:02:18 |  2 | 5 highest buildings  | 
| 4 | liked |   1 |   3 | 2016-05-21 19:02:21 |  3 | 5 largest bridges   | 
+----+----------+-------------+-----------+---------------------+---------+---------------------------+ 

Я пытаюсь создать нечто похожее на новостной канал Facebook. Я имею в виду, когда несколько пользователей в моем списке друзей похожи на один и тот же пост, мы покажем только один результат в новостном канале, в котором говорится, что friend1, friend2, frnd3 и т. Д., Как этот пост xyz.SQL-группа по нескольким столбцам - MySQL

Из этой таблицы я хотел бы сгруппировать по этим трем столбцам (action, object_type, object_id) и список пользователей для этого объекта.

SELECT * 
FROM mytable 
GROUP BY action, object_type, object_id 

Но это дало мне некоторые странные результаты, и я ожидал список пользователей. Я действительно не знаю, как это сделать в этом запросе.

Любая помощь или руководство будут оценены.

+0

Вы можете попробовать это решение для: 'Выберите действие, object_type, object_id, граф (user_id) в качестве пользователя от туЬаЫх GROUP BY действий, object_type, object_id' –

+1

Добавить несколько строк данных образца, а затем покажем нам ожидаемый результат! – jarlh

+0

используйте GROUP_CONCAT, чтобы получить список сгруппированных строк. – an33sh

ответ

1

Попробуйте этот запрос

SELECT action, object_title,count(user_id) as user_count, group_concat(user_id) as user_ids 
    FROM mytable GROUP BY action, object_type, object_id; 
+0

, так что это вернет количество пользователей, совершивших какие-либо действия. правильно? как я могу получить эти идентификаторы вместо count.? – Wendy

+1

use group concat –

+0

обновленный запрос –

Смежные вопросы