COUNT(*)는 항상 결과를 반환합니까?
다음과 같은 쿼리를 실행하는 경우:
SELECT COUNT(*) as num FROM table WHERE x = 'y'
쿼리가 어떤 레코드와도 일치하지 않을 때에도 항상 결과를 반환합니까?아니면 그 결과 행이 반환되는지 확인하고 검증해야 합니까?
네, 집계이기 때문에 0을 반환합니다.그룹이 없기 때문에 결과가 없는 경우에 GROUP BY를 추가하지 않는 한...
MAX/SUM 등은 행이 없을 때까지 GROUP을 추가하지 않는 한 NULL을 반환합니다.COUNT만 결과가 없을 때 숫자를 반환합니다.
편집, 조금 늦었습니다. SUM이 MAX와 같이 NULL을 반환합니다.
Edit, 2013년 5월 : 모든 메인 RDBMS에 적용됩니다. ANSI 기준에 따른 것으로 생각됩니다.
예, "count" 함수 자체의 반환 값은 예외 없이 항상 null이 아닌 정수입니다.
그럼에도 불구하고 실제로는 결과 집합인 쿼리의 반환 값에 더 관심이 있을 수 있습니다.그렇다면 쿼리에 "그룹 기준" 절이 포함되어 있는지 여부만 고려하면 됩니다.
다음과 같은 집계 함수를 가진 그룹화되지 않은 쿼리입니다.
select count(*), sum(*), max(*), min(*) from table
는 집계 함수의 반환 값을 포함하는 단일 레코드로 결과 집합을 생성합니다.이 경우 결과 집합에는 항상 하나의 레코드와 포함된 모든 집계 함수의 반환 값을 포함하는 열이 있습니다.이 단독 레코드 내에서 카운트의 반환 값은 항상 null이 아닌 정수가 되며 min, max 및 sum과 같은 다른 집계 함수의 반환 값은 null이 될 수 있습니다.위의 예에서 반환된 레코드는 "0, null, null, null"일 수 있지만 카운트가 null을 반환하지 않으므로 "null, null, null, null"이 되지 않습니다.따라서 "count"만 호출하는 경우 해당 레코드의 한 열에는 항상 카운트의 null이 아닌 반환 값이 포함됩니다. 따라서 카운트 쿼리의 스칼라 반환 값은 항상 null이 아닌 정수가 됩니다.
반면, 다음과 같은 집합 함수를 가진 그룹화된 쿼리.
select count(*), sum(*), max(*), min(*) from table group by column
는 식별된 각 그룹에 대한 집계 함수의 반환 값을 포함하는 0개 이상의 레코드로 결과 집합을 생성합니다.이 경우 식별된 그룹이 없으면 집계 함수를 실행할 그룹이 없고 함수가 실행되지 않으며 "쿼리 반환 값"은 레코드가 전혀 없는 빈 집합이 됩니다.
기록이 없는 테이블에서 테스트하여 결과를 확인합니다.
create table #t (c int);
select COUNT(c), MIN(c), MAX(c), SUM(c) from #t; --returns one record {0, null, null, null}
select COUNT(c), MIN(c), MAX(c), SUM(c) from #t group by c; --returns no records
drop table #t;
따라서 카운트, min, max 또는 sum을 호출하든 개별 집계 함수의 반환 값뿐만 아니라 쿼리 자체의 "반환 값", 그리고 해당 결과 집합에 무엇이 포함되어 있는지를 이해하는 것이 중요합니다.
집계 함수 Count()는 항상 값을 반환합니다.
네, 그런 경우에는 0을 반환합니다.
다음과 같은 결과가 항상 있을 것입니다.
| COUNT(*) |
------------
| 0 |
성냥이 없으면
합니다인 싶습니다.*
.
일치하는 레코드가 없으면 카운트는 0을 반환합니다. (따라서 예, 구문 오류가 없는 한 카운트는 항상 결과를 반환합니다.)
예, 항상 숫자를 반환합니다.
언급URL : https://stackoverflow.com/questions/2552086/does-count-always-return-a-result
'IT' 카테고리의 다른 글
워드프레스: 함수라고 부르는 후크를 파악하는 것 (0) | 2023.10.05 |
---|---|
워드프레스에서 크로스 오리진 프레임에 접근할 때 오리진이 있는 차단된 프레임을 해결하는 방법? (0) | 2023.10.05 |
호출 집합 CompoundDrawables()에 CompoundDrawables()가 표시되지 않습니다. (0) | 2023.10.05 |
CSS는 텍스트와 다른 색을 사용합니까? (0) | 2023.10.05 |
특정 페이지 템플릿에 add_filter를 사용하려면 어떻게 해야 합니까? (0) | 2023.10.05 |