GROUP BY 없이 HAVING
SQL 표준에 따르면 HAVING 절은 일반적으로 그룹을 필터링하기 위해 GROUP BY 절과 함께 사용됩니다. 해당 그룹에서 수행된 집계 계산을 기반으로 한 행 수입니다. 그러나 일부 데이터베이스 시스템에서는 GROUP BY 없이 HAVING 절을 사용할 수 있습니다.
질문:
다음에 따라 GROUP BY 없이 HAVING 절을 사용할 수 있습니까? SQL 표준?
답변:
예, 표준 SQL에서는 GROUP BY 없이 HAVING 절을 사용할 수 있습니다. 그러나 이러한 쿼리의 동작은 사용 중인 데이터베이스 시스템에 따라 다릅니다.
MySQL 동작:
MySQL에서는 GROUP BY 없이 HAVING 절이 허용됩니다. 결과 집합의 첫 번째 행에는 집계된 열의 최대값이 있습니다. 이 동작은 일반적으로 HAVING 절이 있는 경우 GROUP BY 절이 필요한 SQL 표준에서 벗어납니다.
SQL 표준 해석:
SQL 표준은 HAVING 절은 GROUP BY 절에 의해 생성된 결과 집합에 대해 계산된 집계에 따라 작동합니다. GROUP BY 절이 없으면 HAVING 절이 어떤 행을 참조하는지 불분명해집니다.
따라서 SQL 표준에 따르면 GROUP BY가 없는 HAVING 절은 엄격하게 유효하지 않습니다. 그러나 MySQL과 같은 일부 데이터베이스 시스템에서는 호환성 이유로 이러한 쿼리를 허용할 수 있습니다.
유효한 표준 SQL 예:
SELECT 'T' AS result FROM Book HAVING MIN(NumberOfPages) < MAX(NumberOfPages);
이 쿼리는 유효한 표준 SQL입니다. 다른 개수의 책이 있는 경우 'T' 값을 포함하는 열이 있는 단일 행을 반환합니다. 페이지.
결론:
GROUP BY 없이 HAVING 절을 사용하는 것이 특정 시나리오에서는 편리할 수 있지만 그러한 쿼리의 동작은 그렇지 않다는 점에 유의하는 것이 중요합니다. 표준화되어 있으며 데이터베이스 시스템마다 다를 수 있습니다. 안정적인 데이터베이스 간 호환성을 위해 집계 계산을 필터링할 때 HAVING과 함께 GROUP BY를 사용하는 것이 좋습니다.
위 내용은 표준 SQL에서 GROUP BY 절 없이 HAVING 절을 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!