2016-11-18 20 views
7

MSDN trạng thái tài liệu:COUNT (*) Bao gồm các giá trị Null?

COUNT (*) trả về số lượng mục trong một nhóm. Điều này bao gồm NULL giá trị và trùng lặp.

Bạn có thể có giá trị null trong một nhóm như thế nào? Bất cứ ai có thể giải thích điểm mà họ đang cố gắng thực hiện?

+3

Nếu bạn nhìn một chút xa hơn lên họ ' đã sử dụng công thức tốt hơn: _ "COUNT (*) trả về số hàng trong một bảng được chỉ định mà không loại bỏ các bản sao. Nó đếm từng hàng riêng biệt. Điều này bao gồm các hàng có chứa các giá trị null "_ –

+0

@TimSchmelter Cảm ơn bạn, tôi đã bỏ lỡ điều đó. Điều đó nói rõ ràng hơn nhiều. –

+0

Tôi đã xóa nhận xét của mình vì bây giờ tôi đã đọc lại câu hỏi của bạn và nhận xét của bạn mà bạn thực sự đang hỏi" Tại sao Microsoft viết một lời giải thích xấu như vậy trong tài liệu "Tôi không biết câu trả lời cho câu hỏi đó. –

Trả lời

18

Nếu bạn có bảng này

Table1:

Field1 Field2 Field3 
--------------------------- 
    1   1   1 
    NULL  NULL  NULL 
    2   2  NULL 
    1   1   1 

Sau đó

SELECT COUNT(*), COUNT(Field1), COUNT(Field2), COUNT(Field3) 
FROM Table1 

Output là:

COUNT(*) = 4; -- count all rows even null/duplicates 

-- count only rows without null values on that field 
COUNT(Field1) = COUNT(Field2) = 3 
COUNT(Field3) = 2 
+0

Tôi có thể tạo một hàng mà tất cả các trường là null? Trường hợp Microsoft đang giải thích trong tài liệu của họ? –

+1

Có, bạn có thể có tất cả các null trong một hàng, miễn là tất cả các trường cho phép nó. Sẽ rất * kỳ lạ *, nhưng bạn có thể không chắc chắn về ý định của Microsoft về tài liệu Đây là điều bạn phải học sau khi chơi với hàm. –

+0

Bạn hoàn toàn đúng, tôi vừa tạo một bảng tạm thời và chắc chắn đủ COUNT (*) bao gồm hàng rỗng. Có suy nghĩ về nó trong bối cảnh này, Tôi nghĩ rằng việc sử dụng thực tế hơn về điều này và điểm mà Microsoft có thể đang cố gắng tạo ra là nhóm lại bằng một giá trị rỗng. Ví dụ: nếu Trường 2 và 3 trong ví dụ của bạn không phải là rỗng và bạn được nhóm theo Trường 1. –

0

Bạn có thể có giá trị Null liên tiếp tùy thuộc vào cách bạn tham gia. Hãy chắc chắn bạn đang đếm đúng trường hoặc sửa các kết nối của bạn.

Các vấn đề liên quan