「サブクエリは複数の行を返します」エラーを回避しながら、MySQL の各カテゴリから上位 5 項目を取得するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-10 09:13:03
オリジナル
480 人が閲覧しました

How to Retrieve the Top 5 Items from Each Category in MySQL While Avoiding the

MySQL の各カテゴリから上位 5 項目を取得する

各メニューカテゴリのトップ 5 メニュー項目は?解決策は、副作用のある変数を使用することにあります。

改訂されたアプローチを詳しく見てみましょう:

サブクエリでは、SQL の @ 表記を使用して副作用のある変数 @r と @g を導入します。これらの変数は、グループ メンバーシップを追跡し、各グループ内のランクを増やすために使用されます。

  1. @g:=null - @g を NULL に初期化し、新しいグループを開始していることを示します。
  2. @r:=0 - @r を 0 に初期化し、新しいランクの開始を示します。
  3. の WHERE 句サブクエリ (m.menuid = s.menuid の場合) は、メニュー ID に基づいて s と m が位置合わせされていることを確認します。
  4. @r:=case when @g=m.profilename then @r 1 else 1 end - This m.profilename が現在のグループ (@g) と同じ場合、case 式は @r を 1 ずつ増分します。それ以外の場合は、@r を 1 にリセットし、新しいグループの開始を通知します。
  5. @g:=m.profilename - @g を現在のグループのプロファイル名で更新し、これに属する後続の行を追跡できるようにします。 group.
  6. メイン クエリは、サブクエリ テーブル エイリアス X からプロファイル名と名前を取得します。
  7. 最後の WHERE r

このアプローチを実装すると、「サブクエリは複数の行を返します」エラーを発生させることなく、目的の結果を効率的に取得できます。 .

以上が「サブクエリは複数の行を返します」エラーを回避しながら、MySQL の各カテゴリから上位 5 項目を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート