制限付き GROUP_CONCAT: 最適な結果のためのハック
データベース クエリでは、関連データのコンパクトな表現を抽出することが重要になる場合があります。ただし、多対多の関係におけるプレーヤーとスキルのインタラクションで同様の結果を達成するには、単一のクエリで各プレーヤーの上位 3 つのスキルを表示するという課題があります。
提供された SQL クエリは、取得することを目的としています。 GROUP_CONCAT 関数を使用したプレーヤー ID とそれに対応するスキル。ただし、クエリの結果から明らかなように、表示されるスキルを上位 3 つだけに制限することは依然としてわかりにくいです。
この不足に対処するには、GROUP_CONCAT の結果を後処理するハック的だが効果的なアプローチが必要です。
substring_index(group_concat(s.title SEPARATOR ','), ',', 3) as skills
この方法は、スキル名内にカンマが含まれていないことと、適切な数のスキル名に依存します。
残念ながら、GROUP_CONCAT で明示的な LIMIT 句をサポートするための機能リクエストは未解決のままです。
追加の考慮事項
正確な結果を確保するには、次のことが不可欠です。プレイヤーとスキルの関係を格納するテーブル (player_skills) には、タプル (player_id、skill_id)。これにより、同じスキルがプレイヤーに複数回割り当てられることがなくなり、目的の GROUP_CONCAT 操作が中断される可能性があります。
以上がGROUP_CONCAT を使用して各プレーヤーの上位 3 つのスキルを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。