집 >데이터 베이스 >MySQL 튜토리얼 >SQL에서 GROUP BY 없이 HAVING을 사용할 수 있나요?
표준 SQL에서 GROUP BY 절 없이 HAVING 절을 사용할 수 있나요?
질문 1: 표준 SQL 규정 준수
제공된 샘플 쿼리:
SELECT * FROM Book HAVING NumberOfPages = MAX(NumberOfPages)
SQL 표준에 위배됩니다. 표준에 따르면 HAVING 절의 모든 열 참조는 GROUP BY 절에 지정된 열 집합에 기능적으로 종속된 열을 참조해야 합니다. 그러나 문제의 쿼리에는 GROUP BY 절이 없어 비표준입니다.
질문 2: MySQL 호환성
이 쿼리는 특정 조건에서만 MySQL에서 작동합니다. , 여기서 결과의 첫 번째 행에는 NumberOfPages의 최대값이 포함됩니다. 이 동작은 GROUP BY 절 없이 MySQL이 HAVING 절을 처리하기 때문에 발생하는 것 같습니다.
질문 3: 표준 SQL 타당성
표준에서는 GROUP이 없는 HAVING 절을 금지합니다. BY 절은 HAVING 조건을 충족하는 행을 지정할 때 모호성을 생성하기 때문입니다. 전체적으로 고려되는 테이블 표현식의 경우 집계 함수와 비교하기 위해 특정 행을 선택하는 논리적 근거가 없습니다.
유효한 표준 SQL 쿼리의 예:
이 쿼리는 GROUP BY 절 없이 HAVING 절을 올바르게 사용하는 방법을 보여줍니다.
SELECT 'T' AS result FROM Book HAVING MIN(NumberOfPages) < MAX(NumberOfPages);
쿼리는 항상 다음 중 하나를 반환합니다. 값 'T'(페이지 수가 다른 책을 나타냄)가 있는 단일 행 또는 빈 세트(행 없음).
결론:
샘플이 있는 동안 쿼리는 MySQL에서 작동하지만 표준 SQL을 따르지 않습니다. 표준 SQL은 모호성을 피하고 논리적 일관성을 보장하기 위해 GROUP BY 절 없이 HAVING 절을 사용하는 것을 방지합니다.
위 내용은 SQL에서 GROUP BY 없이 HAVING을 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!