ホームページ > データベース > mysql チュートリアル > MySQL での「SELECT リストの式 #1 が GROUP BY にありません」エラーを回避するにはどうすればよいですか?

MySQL での「SELECT リストの式 #1 が GROUP BY にありません」エラーを回避するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-27 18:51:11
オリジナル
331 人が閲覧しました

How Can I Avoid

MySQL ANY_VALUE での GROUP BY エラーの回避

MySQL データベースを使用する場合、特にバージョンでグループ化操作に関連するエラーが発生することがよくあります。 5.7より前。そのような問題の 1 つは、「SELECT リストの式 #1 が GROUP BY にありません」というエラーです。このエラーは、GROUP BY クエリで非集計カラムを取得しようとすると発生します。

MySQL 5.7 では、ANY_VALUE 関数により、非集計カラムから単一の任意の値を取得できるようになり、この問題に対する便利な解決策が提供されます。グループ内の集計列。ただし、この関数は、5.6 などの以前のバージョンの MySQL では使用できません。

回避策の 1 つは、ONLY_FULL_GROUP_BY SQL モードを一時的に無効にすることです。これにより、GROUP BY 操作に対してより厳しい要件が適用されます。これは、次のクエリを使用して実行できます:

SET SESSION sql_mode = '';
ログイン後にコピー

SQL モードを無効にした後、ANY_VALUE 関数を使用したクエリは MySQL 5.6 でエラーなしで実行されます。ただし、この回避策では、クエリ結果で非集計列が返される可能性があるため、予期しない結果が生じる可能性があることに注意することが重要です。

より信頼性の高い解決策は、明示的に集計するように SQL クエリ自体を変更することです。目的の列を選択するか、テーブルから特定の行を選択します。たとえば、クエリ例の画像テーブルに自動インクリメントされる ID 列がある場合、次のクエリは国ごとに 1 行を返し、予測可能な画像が表示されます:

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
ログイン後にコピー

以上がMySQL での「SELECT リストの式 #1 が GROUP BY にありません」エラーを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート