0

次のようなmysqlデータベースにテーブルがあります。

Postings (id, content, user_id, create_date)

ここで、10 人のユーザー (user_id) について、最新の 5 つの投稿 (id) を取得したいと考えています。簡単なアプローチは、1 つのクエリで最新の投稿を持つ 10 人のユーザーを把握し、各ユーザーの最新の 5 つの投稿を取得するために 10 の個別のクエリを起動することです。1 つまたは 2 つのクエリに入れるより簡単な方法はありますか?

4

2 に答える 2

1

これを使って

SELECT * FROM (SELECT * FROM TABLE ORDER BY ID DESC LIMIT 5) AS ttbl ORDER BY ID ASC;

ここで、括弧内のコードは、最新の 5 件の投稿を逆順に表示します。データが最初に ttbl に保存され、再び適切な順序で並べ替えられて、目的の結果が得られるようにします。

それがあなたを解決することを願っています

于 2013-01-27T13:56:08.217 に答える
0

これが私の頭の上からの1つの可能な解決策です(テストされていません)。これにより、各ユーザーの ID が 1 つの列に返されます。最速のクエリにはなりません。

これは、投稿自体ではなく、ID を返すだけです。正直なところ、複数のクエリを実行するという元のアイデアをそのまま使用する必要があると思います。

Select 
(Select group_concat(id order by id desc)
From postings g
Where g.user_id=s.user_id
Limit 5) ids
From  (
Select user_id
From postings p
Group by user_id
Order by id desc
Limit 10) s

また、同様の質問に対するこの回答を確認してください: カテゴリごとに最新の 4 つのアイテムを選択する方法は?

于 2013-01-27T12:58:16.100 に答える