ホームページ >データベース >mysql チュートリアル >SQL GROUP BY クエリの「選択リストの列が無効です」エラーを修正する方法

SQL GROUP BY クエリの「選択リストの列が無効です」エラーを修正する方法

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

How to Fix the

SQL GROUP BY 句の「選択リストの列が無効です」エラーを修正する

GROUP BY を使用したデータベース クエリでは、SELECT リストを慎重に検討する必要があります。 選択したすべての列は、(COUNTSUMMINMAX などの関数を使用して) 集約されるか、明示的に GROUP BY 句に含まれる必要があります。 このルールに従わない場合、「集計関数または GROUP BY 句のいずれにも含まれていないため、選択リストの列は無効です」というエラーが発生します。

このエラーは、SELECT リストに集計されていない列も GROUP BY グループ化の一部でもない列が含まれている場合に発生します。

解決策には、SELECT リストまたは GROUP BY 句のいずれかを調整する必要があります。

例と解決策:

この問題のあるクエリを調べてみましょう:

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

emp.EmpID が集計されておらず、GROUP BY 句に含まれていないため、エラーが発生します。 これを修正するには 2 つの方法があります:

解決策 1: グループ化されていない列を集計する

<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)) がカウントされます。

解決策 2: GROUP BY 句に列を追加します

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

これにより、結果が LocationIDEmpID の両方でグループ化されます。 これにより、異なる LocationID 値を持つ重複した EmpID エントリが削除されることに注意してください。 結果には、各従業員の所在地が個別に表示されます。

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

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