制限付き GROUP_CONCAT
プレイヤーとその上位 3 つのスキルをリストするクエリの作成は困難な場合があります。 GROUP_CONCAT 関数は、複数の行のデータを連結するのに便利なツールですが、制限を指定する機能がありません。
解決策の 1 つは、GROUP_CONCAT の出力を後処理する少し型破りな方法を採用することです。
substring_index(group_concat(s.title SEPARATOR ','), ',', 3) AS skills
このアプローチは、スキル名にカンマが含まれておらず、スキルの数が比較的少ないことを前提としています。ただし、このメソッドは信頼性がやや低く、これらの前提が満たされない場合は予期しない結果が返される可能性があることに注意することが重要です。
代わりに、GROUP_CONCAT 関数で明示的に LIMIT 句を使用することも理想的な解決策です。残念ながら、この機能はまだ GROUP_CONCAT 開発プロセスで保留中です。
さらに、単一プレーヤーのスキルの重複を防ぎ、正確性を確保するために、テーブル player_skills に複合主キー (player_id、skill_id) を持たせることをお勧めします。その結果、GROUP_CONCAT 操作が行われます。
以上がSQL を使用してプレーヤーのトップ 3 スキルを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。