2012-11-30 2 views
3

다음 SQL Server 2008 구문 사이에 다른 점이 있습니다.sql 2008의 선택 개수 (*), 개수 (0), 개수 (100), 개수 (Id)간에 서로 다른가요?

SELECT COUNT(*) FROM dbo.Regular_Report 

SELECT COUNT(0) FROM dbo.Regular_Report 

SELECT COUNT(1) FROM dbo.Regular_Report 

SELECT COUNT(100) FROM dbo.Regular_Report 

SELECT COUNT(ID) FROM dbo.Regular_Report 

위의 답변을 찾으십시오. 미리 감사드립니다.

+5

"SQL-Server 2008"이라고 말하면서 Oracle과 MySQL도 함께 태그를 지정합니다. 왜? –

+0

http://stackoverflow.com/questions/1221559/count-vs-count1 – Buzz

답변

9

첫 번째 4 개는 모두 동일합니다. 총 행 수를 계산합니다.

마지막 행은 ID이 null이 아닌 행 수를 계산합니다.

8

count(id)id 필드의 Null이 아닌 값을 계산합니다.

다른 모든 레코드의 수를 계산합니다.

(그 값이 null이 아닌 모든 레코드를 계산합니다 대신 *의 문자 번호가있는 사람. 아마 쿼리 플래너는 리터럴 값은 어떤 레코드에 대한 널 수 없을 것이라는 점을 인식하고, 대신 count(*)으로 동일한 작업을 수행