私は、ユーザーの視聴履歴を持っています。私は 'content_id'、 'user_id'を記録し、コンテンツを見るたびに 'watch_history'というテーブルにタイムスタンプを追加します。同じコンテンツが連続して複数回視聴されても、すべてのヒットが記録されます。MySQLグループ化ソートの問題
私は鑑賞履歴を抽出する必要がありますが、 'content_id'列は別のものにして、最近視聴した順番に並べる必要があります...私は説明が難しいと思っていますが、作品(同じビデオの複数のインスタンスはありません)。
SELECT content_id, time_stamp, user_id,
COUNT(DISTINCT content_id) AS hit_count
FROM watch_history
WHERE user_id = X
GROUP BY content_id
ORDER BY time_stamp DESC
それは動作しますが、私は、そのコンテンツが見た最後の時間を反映するために、任意のヘルプ「をTIME_STAMP」フィールドを必要とする:
これは私がこれまで持っているものでしょうか?
ありがとうございます。
「SELECT x、COUNT(DISTINCT x)... GROUP BY x」は常に1になります。 'MAX(time_stamp)'が必要です。 _ user_idは最後のtime_stamp値を持つレコードのuser_idではない可能性があります._ – Uueerdo
最新のものについてはmax(time_stamp)を試してください –
@Uueerdo。 。 。あなたのコメントの 'note'は真ではありません。なぜなら、' where'節は単一のユーザIDだけを選ぶからです。 –