SQL "선택 목록의 열이 유효하지 않습니다." 오류 설명
데이터베이스 쿼리는 단일 값 규칙을 따라야 합니다. 이는 SELECT
문의 모든 열이 다음 중 하나를 충족해야 함을 의미합니다.
GROUP BY
절에 포함됩니다(특정 열 값을 기준으로 행을 그룹화).SUM
, MIN
, MAX
, AVG
, COUNT
등).SQL 쿼리 문제:
다음 쿼리는 이 규칙을 위반합니다.
<code class="language-sql">select * from Employee as emp full join Location as loc on emp.LocationID = loc.LocationID group by (loc.LocationID)</code>
*
은 모든 열을 선택합니다. 그러나 Employee.EmpID
(및 기타 Employee
열)은 (GROUP BY
)로 그룹화되거나 집계되지 않습니다. 여러 직원이 loc.LocationID
을 공유할 수 있으므로 쿼리가 모호합니다. 각 위치에 대해 어떤 Employee.EmpID
을 반환해야 할지 알 수 없습니다.
해결책:
이 문제를 해결하려면 두 가지 주요 옵션이 있습니다.
GROUP BY
절에 집계되지 않은 모든 열 포함:<code class="language-sql">select emp.EmpID, loc.LocationID from Employee as emp full join Location as loc on emp.LocationID = loc.LocationID group by emp.EmpID, loc.LocationID</code>
이는 직원 ID와 위치 ID를 기준으로 결과를 그룹화하여 각 위치의 각 직원에 대한 고유한 결과를 제공합니다.
<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)
)를 계산합니다. 다른 집계 함수를 사용하여 합계, 평균 또는 기타 통계를 계산할 수 있습니다.
단일 값 규칙을 따르면 SQL 쿼리는 명확하고 모호하지 않으며 예측 가능한 결과를 생성합니다.
위 내용은 SQL 쿼리에서 '선택 목록의 열이 유효하지 않습니다.' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!