2012-03-20 43 views
6

Tôi thực sự bị mắc kẹt với một truy vấn sql ... Tôi hy vọng ai đó có thể giúp làm sáng tỏ một số cho tôi.Mysql chọn giá trị duy nhất

Đây là những gì bàn của tôi trông giống như

mysql> show fields from france_data; 
+----------+-------------+------+-----+---------+----------------+ 
| Field | Type  | Null | Key | Default | Extra   | 
+----------+-------------+------+-----+---------+----------------+ 
| id  | int(11)  | NO | PRI | NULL | auto_increment | 
| email | varchar(45) | YES |  | NULL |    | 
| name  | varchar(45) | YES |  | NULL |    | 
| lastname | varchar(45) | YES |  | NULL |    | 
| quality | varchar(45) | YES |  | NULL |    | 
| country | varchar(45) | YES |  | NULL |    | 
| state | varchar(45) | YES |  | NULL |    | 
| year  | varchar(45) | YES |  | NULL |    | 
| owner | varchar(45) | YES |  | NULL |    | 
+----------+-------------+------+-----+---------+----------------+ 
9 rows in set (0.00 sec) 

Dưới đây là đánh bắt, tôi có dữ liệu trùng lặp trong bảng của tôi, tôi muốn rút khỏi tất cả các dữ liệu từ bảng này, không trùng lặp dựa trên email.

Tôi chạy một số đơn giản như thế này:

mysql> select count(*) from france_data; 

và đây là kết quả thiết lập:

+----------+ 
| count(*) | 
+----------+ 
| 2405259 | 
+----------+ 
1 row in set (0.01 sec) 

Bây giờ tôi đã cố gắng để chạy một số như thế này:

mysql> select count(*) from france_data group by email; 

Chỉ để xem có bao nhiêu hồ sơ duy nhất tôi có. Thật không may lần này ra ngoài.

Có ai biết cách tôi có thể đếm số hàng duy nhất và chọn cùng loại không?

Trả lời

13

Vui lòng thử này

SELECT COUNT(DISTINCT email) FROM france_data 
+0

Thats tuyệt vời !! Số đếm hoạt động :) nhưng bây giờ tôi đã thử cùng một truy vấn mà không có COUNT(). Tôi không chắc chắn nếu nó chỉ mất một thời gian dài để chạy hoặc nếu nó được treo và sẽ không làm việc. Đây có phải là cách tôi chọn không? 'SELECT DISTINCT email FROM france_data;' – Beyerz

+0

Tôi nghĩ bạn có thể tách truy vấn nhiều hơn 1 câu lệnh bằng lệnh LIMIT [link] (http://php.about.com/od/mysqlcommands/g/Limit_sql.htm) – punny

+0

Cho phép nói Tôi sử dụng 'Giới hạn 0,500' nên kết quả này trong 500 hàng được assed, sau đó chỉ có giá trị khác biệt được trả lại, có hiệu quả dẫn đến tôi có trở lại dưới 500 hàng? – Beyerz

3

Nếu bạn đang nhìn vào hàng độc đáo dựa trên email, đơn giản

select count(distinct email) from france_data 

nên làm các trick.

Nếu bạn cũng đang tìm kiếm để xem con số trùng lặp của mỗi email, hãy thử này:

select email, count(*) as cnt from france_data group by email order by cnt desc; 
+0

Số khác biệt là làm việc cho tôi, tôi không cần phải biết bao nhiêu lần nhân đôi của nó mặc dù, nhưng tôi cần phải xuất ra một bảng kết quả hiển thị tất cả các trường với các trường email là duy nhất. – Beyerz

+0

Ồ, truy vấn thứ hai đó chính xác là những gì tôi đang tìm kiếm! Bằng cách nào đó tôi không bao giờ tiêu hóa cách 'nhóm bởi' hành xử. Cảm ơn bạn rất nhiều @Nikhil! –

0

Vui lòng thử này

select count(distinct email) 
from france_data 
order by email; 
Các vấn đề liên quan