問題を説明する前に、テーブルの構造を簡単に説明します。
タイプ:MySQL投稿/トピックテーブル:
int int** UNIX Time Int Int
--------------------------------------------------
| id | category | postdate | topic_id | is_topic |
--------------------------------------------------
| 1 | a | 12345678 | 1 | 1 |
--------------------------------------------------
| 2 | a | 12345678 | 1 | 0 |
--------------------------------------------------
| 3 | b | 12345678 | 3 | 1 |
--------------------------------------------------
| 4 | b | 12345678 | 3 | 0 |
--------------------------------------------------
| 5 | c | 12345678 | 5 | 1 |
--------------------------------------------------
| 6 | c | 12345678 | 5 | 0 |
--------------------------------------------------
**表を読みやすくするために文字を使用しています
カテゴリごとに最新の4行を取得しようとしていますが、GROUP BYを使用して各カテゴリから最新の1行を取得できますが、カテゴリごとに複数を取得する方法がわかりません。
私はこのようなことを試しました:
SELECT *
FROM posts p
WHERE NOT EXISTS
(
SELECT *
FROM posts
WHERE category = p.category
LIMIT 4
)
また、SOで他の回答を提供してくれた他の回答のいくつかを使用してみましたが、目的に合わせることができなかったようです。
これらのより複雑なクエリに関しては、mysqlは私の強力な側面ではないため、ここでは完全に失われています。
正しい方向へのヘルプやポインタは本当にありがたいです!
ありがとう!
更新:カテゴリの数は静的ではなく、変更されることに注意してください。