>데이터 베이스 >MySQL 튜토리얼 >SQL에서 GROUP BY 없이 HAVING을 사용할 수 있나요?

SQL에서 GROUP BY 없이 HAVING을 사용할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-12-30 21:15:11857검색

Can You Use HAVING Without GROUP BY in SQL?

GROUP BY 없는 HAVING: SQL의 이상

표준 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.