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

Patricia Arquette
リリース: 2024-10-27 23:23:30
オリジナル
544 人が閲覧しました

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

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

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

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

<code class="sql">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 <= 3;</code>
ログイン後にコピー

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

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

以上が分析関数を使用せずに MySQL の各カテゴリから上位 3 行を選択する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!