+----+----------+-------------+-----------+---------------------+---------+---------------------------+
| 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のニュースフィードと同様のものを構築しようとしています。私は友人のリストの複数のユーザーが同じ投稿を好きなときに、このxyz投稿のようなfriend1、friend2、frnd3などと言っているニュースフィードに1つの結果しか表示しません。SQLグループby複数の列 - MySQL
この表から、この3つの列(action
,,object_id
)とこのオブジェクトのユーザー一覧でグループ化したいと思います。
SELECT *
FROM mytable
GROUP BY action, object_type, object_id
しかし、これは私に奇妙な結果をもたらし、ユーザーのリストを期待していました。私は本当にこのクエリでそれを行う方法を知りません。
ご迷惑をおかけして申し訳ございません。
このクエリ試してみてください:アクション、OBJECT_TYPE BY mytableは グループからのユーザーとして(USER_ID)カウント、 'SELECTアクション、OBJECT_TYPE、OBJECT_IDを、object_id' –
を追加サンプルデータの行数を減らし、期待される結果を表示することができます。 – jarlh
GROUP_CONCATを使用して、グループ化された行のリストを取得します。 – an33sh