12

この問題について調査しましたが、解決策を見つけるのに苦労しています。

「some_id」のリストを取得する次のクエリがあります。

SELECT some_id FROM example GROUP BY some_id

そして、「some_id」が数値に等しい行の最新の 5 つのエントリのリストを取得する次のクエリがあります。

SELECT * FROM example
WHERE some_id = 1
ORDER BY last_modified DESC
LIMIT 5

クエリを 1 つだけ使用して、「some_id」ごとに「example」テーブルから上位 5 つの最新エントリを取得するにはどうすればよいですか? 「some_id」のエントリが 5 つ未満の場合、それらを含めても問題ありません。

どうもありがとう!

4

2 に答える 2

16

次の投稿の最初の回答を見ると、答えが見つかりました。

SQL でフィールド値ごとの行数を制限するにはどうすればよいですか?

特定のニーズに合わせて変更しました。

SELECT * FROM
(
    SELECT *, @num := if(@some_id = some_id, @num := @num + 1, 1) as row_num,
           @some_id := some_id as some_id
    FROM example
    ORDER BY last_modified DESC
) as e
WHERE row_num <= 5
于 2012-05-09T12:51:32.247 に答える
-3

こんにちは、すべてのIDのチェック制限にGroup byand having clauseを使用してください..

SELECT * FROM `example`
GROUP BY some_id
HAVING count( * ) <= 5
ORDER BY last_modified DESC

それはすべてsome_idをチェックし、number of rows for some_id is <=5それが表示結果になるかどうかをチェックします。

于 2012-04-30T11:45:11.747 に答える