ホームページ >データベース >mysql チュートリアル >GROUP BY を使用した SQL SELECT クエリが「無効な列」エラーを返すのはなぜですか?
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 サイトの他の関連記事を参照してください。