ホームページ > データベース > mysql チュートリアル > SQL クエリで GROUP BY に関連する「選択リストの列が無効です」エラーがスローされるのはなぜですか?

SQL クエリで GROUP BY に関連する「選択リストの列が無効です」エラーがスローされるのはなぜですか?

Barbara Streisand
リリース: 2025-01-23 01:21:10
オリジナル
304 人が閲覧しました

Why Does My SQL Query Throw a

SQL クエリ エラー: 列は集計関数または GROUP BY 句に準拠していないため、SELECT リストでは無効です

SQL クエリを実行すると、次のエラーが発生する場合があります:

<code>Column 'Column_Name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.</code>
ログイン後にコピー

このエラーの理由は次のとおりです:

データのグループ化

GROUP BY 句では、同じ列値を持つ行をグループ化するように指定します。たとえば、次のクエリでは:

<code>SELECT loc.LocationID, emp.EmpID
FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID</code>
ログイン後にコピー

従業員は LocationID によってグループ化されます。ただし、GROUP BY 句にない列 (emp.EmpID など) を SELECT リストに含めようとすると、どの EmpID を含めるべきかを判断できないため、このエラーが発生します。グループ値ごとに選択されます。

集計関数

SUMCOUNTMAXMIN などの 集計関数を使用して、グループ化されたデータの概要情報を取得できます。 SELECT リストに非集計列を含めるが、それが GROUP BY 句の一部ではない場合は、その列に対して集計関数を使用する必要があります。

たとえば、場所ごとの従業員数を計算したい場合は、次を使用します:

<code>SELECT loc.LocationID, COUNT(emp.EmpID)
FROM Employee AS emp FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID</code>
ログイン後にコピー

これにより、各拠点について、個々の従業員 ID のリストではなく、従業員の数のみが返されるようになります。

解決策

このエラーを解決するには、次のことを行う必要があります:

  • GROUP BY 句に列を追加します: これにより、追加の列に基づいてデータもグループ化されます。
  • SELECT リストの列に集計関数を使用します: これにより、非集計列に基づいて各グループの概要情報が計算されます。

以上がSQL クエリで GROUP BY に関連する「選択リストの列が無効です」エラーがスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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