Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta mysql DISTINCT

Estas en el tema de Consulta mysql DISTINCT en el foro de Mysql en Foros del Web. Existe alguna funcion que me retorne un "NOT DISTINCT()" ?? O sea que me devuelva solo los registros repetidos...
  #1 (permalink)  
Antiguo 23/08/2006, 14:47
Avatar de walo  
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 19 años, 10 meses
Puntos: 0
Consulta mysql DISTINCT

Existe alguna funcion que me retorne un "NOT DISTINCT()" ??

O sea que me devuelva solo los registros repetidos
  #2 (permalink)  
Antiguo 23/08/2006, 16:19
 
Fecha de Ingreso: noviembre-2005
Mensajes: 27
Antigüedad: 18 años, 5 meses
Puntos: 0
hay una manera de hacer una consulta que te busque los registro duplicados
la sentencia es la siguiente:

Select * from tabla where campo que tiene duplicados in o en otros casos = (select campo de la condicion from misma tabla pero esta vez con un alias group by que es donde agrupas el o los campos duplicados having count(*)>1 and tabla sin el alias.campo del 2º select = tabla con el alias.mismo nombre del campo)
order by campo

Explicado de esta forma es complicado pero este ejemplo busca los datos duplicados de un solo campo, si lo que tienes que buscar son mas de un campo duplicado en los registro de la tabla solo tienes que agregarlo en el group by. Ten presente que no existe la condicion where en el segundo select.

Espero haber servido de algo. Si no me explique bien me serviria de algo un ejemplo asi lo hacemos juntos
Saludos
  #3 (permalink)  
Antiguo 23/08/2006, 18:15
Avatar de walo  
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 19 años, 10 meses
Puntos: 0
uhh, si vamos al ejemplo concreto por que me re perdi
La tabla "xlista_x"

| id | nombre | email |

El campo en donde puede haber datos repetidos es "email"
  #4 (permalink)  
Antiguo 24/08/2006, 06:45
 
Fecha de Ingreso: noviembre-2005
Mensajes: 27
Antigüedad: 18 años, 5 meses
Puntos: 0
Es:

select * from xlista_x where email in (select email from xlista_x as x
group by email having count(*)>1 and xlista_x.email=x.email)
order by email

Supomgamos que ademas del mail duplicado queres saber si tambien el nombre es asi

select * from xlista_x where email in (select email from xlista_x as x
group by email,nombre having count(*)>1 and xlista_x.email=x.email and
xlista_x.nombre=x.nombre)
order by email

Es decir cuando mas campos sean los duplicados tendran que ir en el group by y en el having. Ten en cuenta que esta consulta puede demorar bastante

Decime si funciono
  #5 (permalink)  
Antiguo 24/08/2006, 07:28
 
Fecha de Ingreso: mayo-2005
Mensajes: 132
Antigüedad: 18 años, 11 meses
Puntos: 0
y no seria mas facil:

SELECT id, nombre, email FROM xlista_x HAVING COUNT(email) >1
  #6 (permalink)  
Antiguo 24/08/2006, 07:49
 
Fecha de Ingreso: noviembre-2005
Mensajes: 27
Antigüedad: 18 años, 5 meses
Puntos: 0
Es cierto pero te falto el group by y ademas creo que para este caso el tiene que ver cuales son los registro duplicado y con tu ejemplo muesta que ese registro esta duplicado. Es decir muestra uno de los dos.
Saludos
  #7 (permalink)  
Antiguo 24/08/2006, 09:37
Avatar de walo  
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 19 años, 10 meses
Puntos: 0
nacho9, el tuyo me hizo un loop que tube que resetear la maquina del boton. amnix el tuyo me devolvio una sola linea. Seguire investigando, gracias igual !
  #8 (permalink)  
Antiguo 24/08/2006, 13:11
 
Fecha de Ingreso: noviembre-2005
Mensajes: 27
Antigüedad: 18 años, 5 meses
Puntos: 0
De la manera que te comente es como se hace. Te avise que tardaba mucho. Pero si puedes ver los procesos te daras cuenta que esta corriendo.
  #9 (permalink)  
Antiguo 24/08/2006, 14:03
 
Fecha de Ingreso: mayo-2005
Mensajes: 132
Antigüedad: 18 años, 11 meses
Puntos: 0
ok efectivamente el ejemplo que puse solo muestra un registro, pense que esa era la idea, pero si queires que te devuelva todos los registros repetidos es igual solo haces en in y ocupas eso como subquery asi:

SELECT * FROM xlista_x WHERE email IN (SELECT email FROM xlista_x HAVING COUNT(email) >1 )

y segun yo no es necesario el group by,pero, corrigeme nacho_99i
  #10 (permalink)  
Antiguo 24/08/2006, 16:39
Avatar de walo  
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 19 años, 10 meses
Puntos: 0
Lo hare de la forma clasica, por que es para un sistema que va a funcionar en un servidor y si se traba asi con 2000 registros no me imagino con 100.000, me quedo sin servidor.
Pero esta interesante para cuando necesite joder a alguien ;)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:36.