「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 分析関数を使用せずに MySQL の各カテゴリから上位 3 行を選択する方法は?

分析関数を使用せずに MySQL の各カテゴリから上位 3 行を選択する方法は?

2024 年 11 月 3 日に公開
ブラウズ:588

How to Select the Top 3 Rows from Each Category in MySQL Without Analytic Functions?

MySQL の複数のカテゴリから上位 3 行を選択する

テーブル内の各カテゴリから上位 3 行を選択するのは難しい場合があります。最初の試行で説明したように、ビューとサブクエリを利用する 1 つの方法では、間違った結果が返される可能性があります。

より効果的なアプローチでは、MySQL がネイティブにサポートしていない分析関数を使用します。ただし、変数を使用してこれらの関数をエミュレートすることは可能です。方法は次のとおりです:

SELECT x.*
FROM (
  SELECT t.*,
         CASE
           WHEN @category != t.category THEN @rownum := 1
           ELSE @rownum := @rownum   1
         END AS rank,
         @category := t.category AS var_category
  FROM TBL_ARTIKUJT t
  JOIN (SELECT @rownum := NULL, @category := '') r
  ORDER BY t.category
) x
WHERE x.rank 

このクエリは、JOIN 操作を使用して変数 @rownum と @category を初期化します。次に、カテゴリに基づいて各行にランクを割り当て、カテゴリが変更されるとランクが増加します。

最後に、クエリはランク 3 以下の行のみを選択します。必要な列のみを含めるように SELECT x.* 句を変更する必要がある場合があることに注意してください。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3