グループを使用しない集計: MySQL 5.6 のソリューション
MySQL 5.6 では、グループ化されていない列を集計できる ANY_VALUE() 関数、は利用できません。これは、クエリを MySQL 5.7 から 5.6 に移行するときに問題になります。
MySQL モードの変更
解決策の 1 つは、運用環境の SQL モードを変更することです。 ONLY_FULL_GROUP_BY モードを空に設定すると、グループ化されていない列の集計に対する制限が一時的に無効になります。
SET SESSION sql_mode = ''; /* Your query here */ SET SESSION sql_mode = @mode;
代替集計方法
ただし、これは重要です。問題のクエリは理想的ではない可能性があることに注意してください。各国の「画像」テーブルからランダムな行を返します。
より信頼性の高い方法は、「id」列などの基準に基づいて特定の画像行を選択することです。
SELECT c.id, c.name, i.* FROM countries c LEFT JOIN ( SELECT MIN(id) id, country_id FROM images GROUP BY country_id ) first ON c.id = first.country_id LEFT JOIN images i ON first.id = i.id
このクエリは、予測可能な画像の選択とともに国ごとに 1 行を返します。 「id」列を利用して、各国の「最初の」画像を選択します。
以上がMySQL 5.6 でグループ化されていない列を集計するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。