2012-03-20 13 views
6

Estoy realmente atrapado en una consulta SQL ... Espero que alguien pueda ayudar a arrojar algo de luz sobre mí.Mysql seleccionando valores únicos

Esto es lo que se ve mi mesa como

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) 

Aquí está la trampa, no tengo datos duplicados en mi mesa, me gustaría sacar todos los datos de esta tabla, no duplicado basado en el correo electrónico.

Me corrió un recuento simple como esto:

mysql> select count(*) from france_data; 

y este es el conjunto de resultados:

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

Ahora he tratado de realizar un recuento de la siguiente manera:

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

Solo para ver cuántos registros únicos tengo. Desafortunadamente esto agota el tiempo.

¿Alguien sabe cómo puedo hacer un conteo de filas únicas y seleccionar del mismo tipo?

Respuesta

13

Por favor, intente esta

SELECT COUNT(DISTINCT email) FROM france_data 
+0

eso es genial !! El recuento funciona :) pero ahora he intentado la misma consulta sin COUNT(). No estoy seguro si solo lleva mucho tiempo ejecutar o si está colgando y no funcionará. ¿Es así como hago la selección? 'SELECCIONE EL MENSAJE DISTINTO FROM france_data;' – Beyerz

+0

Creo que podría dividir la consulta en más de 1 enunciado con el comando LIMIT [link] (http://php.about.com/od/mysqlcommands/g/Limit_sql.htm) – punny

+0

Digamos Utilizo 'Limit 0,500' si esto da como resultado que se asienten 500 filas, entonces solo se devuelven valores distintos, lo que resulta en que tenga un retorno de menos de 500 filas. – Beyerz

3

Si usted está buscando en filas únicas basadas en correo electrónico, un simple

select count(distinct email) from france_data 

debe hacer el truco.

Si también está buscando para ver el recuento duplicado de cada correo electrónico, intente esto:

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

El recuento distinto me funciona, pero no necesito saber cuántas veces está duplicado, pero sí tengo que generar una tabla de resultados que muestre todos los campos con campos de correo electrónico únicos. – Beyerz

+0

¡Guau, esa segunda consulta es exactamente lo que estaba buscando! De alguna manera, nunca digerí cómo se comporta 'group by'. Muchas gracias @Nikhil! –

0

Por favor, intente esta

select count(distinct email) 
from france_data 
order by email; 
Cuestiones relacionadas