Un requisito muy común cuando se trabaja con datos, es encontrar entradas duplicadas. El lenguaje SQL es muy potente en hacerlo, pero mucha gente prefiere utilizar Excel para encontrar duplicados. Mi opinión es que esta es buena para los pequeños conjuntos de datos (menos de 10.000 filas). Puedes utilizar el formato condicional (por ejemplo, con este: =CONTAR.SI(a:A,a2) > 1)), o
puedes utilizar el Filtro/avanzado menú de opciones para filtrar y copiar a otro lugar (hay que activar la casilla para copiar sólo registros únicos). Más modernas versiones de Excel tienen ahora un comando en el menú de Datos: “quitar duplicados”
En MySQL (y, de hecho, otras versiones de SQL) la forma más común de encontrar duplicados de las entradas de campo es el uso de la cláusula GROUP BY. Por ejemplo, para devolver las entradas para el campo “job” de la tabla emp que tienen más de 1 fila/empleado registrado contra ese “job” en particular:
Code:
select job, count(*) |
|
-> from emp |
|
-> group by job |
|
-> having count(*) > 1; |
Si querías devolver registros registró más de 3 veces en la tabla solo necesitas modificar la cláusula HAVING.
Code:
select job, count(*) |
|
-> from emp |
|
-> group by job |
|
-> having count(*) > 3; |
Por cierto, si sólo querías devolver distinta campo(s) en una tabla, puedes utilizar GROUP BY sin realizar suma. Ahora esto es todo muy bien, pero suponiendo que tienes la obligación de devolver todos los campos en un registro se produce cuando el identificador/campo es un duplicado. Podemos hacer esto por un subconsulta de IN:
Code:
mysql> select a.* from emp a |
|
-> where a.job in |
|
-> (select b.job |
|
-> from emp b |
|
-> group by b.job having count(*) >1); |
Todo muy bien hasta ahora, pero vamos a introducir una tabla segunda. Supongamos que queremos seleccionar los registros que se producen dos veces en las dos tablas. Podemos hacerlo utilizando el operador UNION para devolver todos los registros de ambas tablas. (recuerde usar UNION ALL, si no los duplicados sería reprimida). Entonces pongamos esto en un “inline view” y, a continuación, utilizar la cláusula GROUP BY para seleccionar sólo duplicados
Code:
select empno, ename, job |
|
from |
|
(select empno, ename, job |
|
from emp |
|
UNION ALL |
|
select empno, ename, job |
|
from emp_temp) as empt |
|
group by empno, ename, job having count(*) > 1; |
No estoy seguro de cómo se enfoque en Excel! Aunque es bastante fácil en Mysql!
Diviértete con Mysql!
Original post blogged on b2evolution.






Ningn usuario enviaron comentarios sobre " Encontrar duplicados "
Follow-up comment rss e enví un Trackback