ホームページ >データベース >mysql チュートリアル >MySQL 5.6 でグループ化されていない列を集計するにはどうすればよいですか?

MySQL 5.6 でグループ化されていない列を集計するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-29 04:35:13297ブラウズ

How to Aggregate Non-Grouped Columns in MySQL 5.6?

グループを使用しない集計: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。