ホームページ >データベース >mysql チュートリアル >SQL クエリで「集計またはグループ化句に列がありません」エラーが発生するのはなぜですか?
「列が集計または Group By 句にありません」SQL エラーのトラブルシューティング
このガイドでは、一般的な SQL エラー「列 'Employee.EmpID' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。」に対処します。このエラーは、SELECT ステートメントに、集計されておらず、GROUP BY 句の一部でもない列が含まれている場合に発生します。
集計関数と GROUP BY について
GROUP BY
句は、指定された列に同じ値を持つ行をグループ化します。 これらのグループのデータを表示するには、通常、SUM
、COUNT
、AVG
、MIN
、または 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 サイトの他の関連記事を参照してください。