2010-05-27 43 views
5

Tôi có danh sách các thẻ trong cơ sở dữ liệu.Cách thực hiện COUNT() hoặc COUNT (*)

Ex:

villan 
hero 
spiderman 
superman 
superman 

tôi muốn để có được một danh sách được sắp xếp trong những cái tên thẻ thứ tự tăng dần và số lần các thẻ duy nhất xuất hiện trong cơ sở dữ liệu. Tôi đã viết mã này:

Ex:

SELECT hashtag.tag_name 
     , COUNT(*) AS number 
    FROM hashtag 
    GROUP BY hashtag.tag_name 
    ORDER BY hashtag.tag_name ASC 

Điều này mang lại kết quả chính xác:

hero  , 1 
spiderman , 1 
superman , 2 
villan , 1 

Làm thế nào tôi có thể có được COUNT đầy đủ của toàn bộ danh sách này. Câu trả lời phải là 4 trong trường hợp này vì có 4 hàng tự nhiên. Tôi dường như không thể nhận được đúng COUNT() mà không có câu lệnh không thành công.

Cảm ơn bạn rất nhiều vì đã trợ giúp! :)

Trả lời

6
SELECT COUNT(DISTINCT `tag_name`) FROM `hashtag` 
+0

Cảm ơn bạn rất nhiều điều này đã giải quyết nó, gosh tôi biết điều này tôi thậm chí không nghĩ về nó. – ninu

+0

Sau đó, tôi sẽ được đánh giá cao vì vậy bạn chấp nhận điều này để làm cho tôi 3k + SF thành viên ;-) – zerkms

+1

I'LL DO IT! Ngoài ra, tôi nghĩ bạn đang bối rối; upvote này sẽ không thay đổi đại diện của bạn trên SF ở tất cả :) –

1

Sử dụng COUNT DISTINCT(hashtag.tag_name) - nó không thể đi trong cùng SELECT bạn có (trừ trường hợp một UNION tất nhiên), nhưng trên một SELECT của riêng nó (hoặc thích hợp UNION) nó sẽ cung cấp cho các kết quả bạn muốn.

0

tôi không chắc chắn về truy vấn trong sql của tôi nhưng điều này hoạt động tốt với oracle.

SELECT hashtag.tag_name, count(*) FROM hashtag GROUP BY cube(hashtag.tag_name) 
0

Để làm điều đó chính xác như bạn đang mô tả (để có được số lượng đầy đủ của danh sách kết quả), bạn muốn tham gia một số các kết quả, như:

SELECT COUNT(*) AS uniquetags 
FROM (SELECT hashtag.tag_name, COUNT(*) AS number 
     FROM hashtag GROUP BY hashtag.tag_name 
     ORDER BY hashtag.tag_name ASC) 

Tất nhiên mệnh đề ORDER BY là không cần thiết và bị nuốt bởi tổng hợp bên ngoài COUNT, cũng như bên trong COUNT.

Bên cạnh đó, như một vài người đã chỉ ra, các phím tắt này là một COUNT DISTINCT, như trong:

SELECT COUNT(DISTINCT hashtag.tag_name) 
FROM hashtag 

này có thể hoặc không thể sử dụng các chỉ số hiệu quả hơn, tùy thuộc vào việc nó nhận ra nó doesn' t phải đếm mọi thứ hay không. Ai đó có nhiều kiến ​​thức hơn, xin vui lòng bình luận (hoặc chỉ cần thử một vài số EXPLAIN s).