ホームページ >データベース >mysql チュートリアル >SQL クエリで「集計またはグループ化句に列がありません」エラーが発生するのはなぜですか?

SQL クエリで「集計またはグループ化句に列がありません」エラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-23 01:26:09345ブラウズ

Why Does My SQL Query Produce a

「列が集計または Group By 句にありません」SQL エラーのトラブルシューティング

このガイドでは、一般的な SQL エラー「列 'Employee.EmpID' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。」に対処します。このエラーは、SELECT ステートメントに、集計されておらず、GROUP BY 句の一部でもない列が含まれている場合に発生します。

集計関数と GROUP BY について

GROUP BY 句は、指定された列に同じ値を持つ行をグループ化します。 これらのグループのデータを表示するには、通常、SUMCOUNTAVGMIN、または MAX などの集計関数を使用します。これらの関数は、各グループの集計値を計算します。

単一値ルール

SQL の単一値ルールでは、SELECT リスト内の非集計列は各グループ内で単一の一貫した値を持つ必要があると規定されています。 非集計列がグループごとに複数の値を保持する場合、SQL はどの値を返すかを決定できないため、クエリがあいまいになります。

エラーの解決

あなたの目標は、ロケーション ID と各ロケーションの従業員数をリストすることであるとします。修正されたクエリでは、COUNT 集計関数が使用されています:

<code class="language-sql">SELECT loc.LocationID, COUNT(emp.EmpID) AS EmployeeCount
FROM Employee AS emp
FULL JOIN Location AS loc ON emp.LocationID = loc.LocationID
GROUP BY loc.LocationID;</code>

COUNT(emp.EmpID) は、各 LocationID の従業員数を計算します。これにより、グループごとに単一の EmployeeCount 値が確保され、単一値ルールが満たされ、エラーが排除されます。 GROUP BY loc.LocationID 句は、結果を場所ごとにグループ化します。

以上がSQL クエリで「集計またはグループ化句に列がありません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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