ホームページ >データベース >mysql チュートリアル >GROUP BY を使用した SQL SELECT クエリが「無効な列」エラーを返すのはなぜですか?

GROUP BY を使用した SQL SELECT クエリが「無効な列」エラーを返すのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-23 01:07:11862ブラウズ

Why Does My SQL SELECT Query with GROUP BY Return an

SQL GROUP BY クエリ内の無効な列エラー

GROUP BY 句を含む SQL クエリで列を選択する場合、その列が集計関数にも GROUP BY 句にも含まれていない場合、エラーが発生することがあります。このエラーは通常、次のようになります。「列 'Employee.EmpID' は、集計関数にも GROUP BY 句にも含まれていないため、選択リストでは無効です。」

この理由は単一値ルールにあります。 GROUP BY クエリでは、非集計列の出力は各グループ内で一意である必要があります。ただし、「Employee.EmpID」のように、集計せずに単一の列を選択すると、結果があいまいになります。

このエラーを解決するには、列を GROUP BY 句に含めるか、集計関数をそれに適用します。たとえば、場所ごとの従業員数を計算する場合は、次のクエリを使用します:

<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>

このクエリは、各グループの場所 ID を提供しながら、各場所の従業員の数をカウントします。あるいは、各場所のすべての列を選択し、最新の従業員 ID (最大値) のみを表示したい場合は、MAX 集計関数を使用できます:

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

集計関数を使用するか、GROUP BY 句に列を含めることにより、取得されたデータが一義的になり、単一値のルールに準拠していることを保証できます。

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

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