MySQL で各カテゴリの上位 5 項目を返す方法
各カテゴリから限られた数のレコードを返すことは、MySQL の一般的な要件です。データベースアプリケーション。メニューごとに上位 5 つのメニュー項目を返すという特定のケースでは、サブクエリがメニューごとに複数の行を返すために問題が発生し、「サブクエリは 1 行以上を返します」エラーが発生します。
これを克服するにはこの問題に対して、一般的なアプローチは、副作用をもたらす変数を使用することです。以下はエラーに対処する修正されたクエリです:
SELECT profilename, name FROM ( SELECT m.profilename, s.name, @r:=case when @g=m.profilename then @r+1 else 1 end r, @g:=m.profilename FROM (select @g:=null,@r:=0) n cross join menus m left join menuitems s on m.menuid = s.menuid ) X WHERE r <= 5
クエリの内訳:
このクエリは、副作用のある変数を利用することで、カテゴリごとに最大 5 つのレコードを返し、元のエラーを解決します。
以上がMySQL の各カテゴリの上位 5 項目を返す方法: サブクエリ エラーの処理?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。