Comparar dos tablas en SQL

Comparar Dos Tablas En Sql



La comparación de datos en SQL es una tarea común con la que todo desarrollador de bases de datos se encontrará ocasionalmente. Afortunadamente, la comparación de datos viene en una amplia variedad de formatos, como comparación literal, comparación booleana, etc.

Sin embargo, uno de los escenarios de comparación de datos del mundo real que puede encontrar es la comparación entre dos tablas. Desempeña un papel crucial en tareas como la validación de datos, la identificación de errores, la duplicación o la garantía de la integridad de los datos.







En este tutorial, exploraremos todos los diversos métodos y técnicas que podemos emplear para comparar dos tablas de bases de datos en SQL.



Configuración de datos de muestra

Antes de profundizar en cada uno de los métodos, configuremos una configuración de datos básica con fines de demostración.



Tenemos dos tablas con datos de muestra como se muestra en el ejemplo.





Tabla de muestra 1:

A continuación se incluyen las consultas para crear la primera tabla e insertar los datos de muestra en la tabla:



CREAR TABLA sample_tb1 (
empleado_id INT CLAVE PRIMARIA AUTO_INCREMENT,
primer_nombre VARCHAR ( 50 ) ,
apellido VARCHAR ( 50 ) ,
departamento VARCHAR ( 50 ) ,
salario DECIMAL ( 10 , 2 )
) ;

INSERTAR EN muestra_tb1 ( nombre, apellido, departamento, salario )
VALORES
    ( 'Penélope' , 'Perseguir' , 'HORA' , 55000.00 ) ,
    ( 'Mateo' , 'Jaula' , 'ÉL' , 60000.00 ) ,
    ( 'jenifer' , 'davis' , 'Finanzas' , 50000.00 ) ,
    ( 'Kirsten' , 'Fawcet' , 'ÉL' , 62000.00 ) ,
    ( 'Cameron' , 'costner' , 'Finanzas' , 48000.00 ) ;

 

Esto debería crear una nueva tabla llamada 'sample_tb1' con información variada, como nombres, departamento y salario.

La tabla resultante es la siguiente:

Tabla de muestra 2:

Procedamos y creemos dos tablas de muestra. Supongamos que se trata de una copia de seguridad de la primera tabla. Podemos crear la tabla e insertar datos de muestra como se muestra a continuación:

CREAR TABLA sample_tb2 (
empleado_id INT CLAVE PRIMARIA AUTO_INCREMENT,
primer_nombre VARCHAR ( 50 ) ,
apellido VARCHAR ( 50 ) ,
departamento VARCHAR ( 50 ) ,
salario DECIMAL ( 10 , 2 )
) ;
INSERTAR EN sample_tb2 ( nombre, apellido, departamento, salario )
VALORES
    ( 'Penélope' , 'Perseguir' , 'HORA' , 55000.00 ) ,
    ( 'Mateo' , 'Jaula' , 'ÉL' , 60000.00 ) ,
    ( 'jenifer' , 'davis' , 'Finanzas' , 50000.00 ) ,
    ( 'Kirsten' , 'Fawcet' , 'ÉL' , 62000.00 ) ,
    ( 'Audrey' , 'Decano' , 'Finanzas' , 48000.00 ) ;

 

Esto debería crear una tabla e insertar los datos de muestra como se especifica en la consulta anterior. La tabla resultante es la siguiente:

Comparar dos tablas usando Excepto

Una de las formas más comunes de comparar dos tablas en SQL es utilizar el operador EXCEPTO. Esto encuentra las filas que existen en la primera tabla pero no en la segunda tabla.

Podemos usarlo para realizar una comparación con las tablas de muestra de la siguiente manera:

SELECCIONAR *
DE muestra_tb1
EXCEPTO
SELECCIONAR *
DESDE muestra_tb2;

 

En este ejemplo, el operador EXCEPTO devuelve todas las filas distintas de la primera consulta (sample_tb1) que no aparecen en la segunda consulta (sample_tb2).

Comparar dos tablas usando unión

El segundo método que podemos utilizar es el operador UNION junto con la cláusula GROUP BY. Esto ayuda a identificar los registros que existen en una tabla, no en la otra, y al mismo tiempo conserva los registros duplicados.

Realice la consulta que se demuestra a continuación:

SELECCIONAR
ID de empleado,
nombre de pila,
apellido,
departamento,
salario
DE
    (
SELECCIONAR
ID de empleado,
nombre de pila,
apellido,
departamento,
salario
DE
muestra_tb1
UNIÓN TODOS
SELECCIONAR
ID de empleado,
nombre de pila,
apellido,
departamento,
salario
DE
muestra_tb2
) AS datos_combinados
AGRUPAR POR
ID de empleado,
nombre de pila,
apellido,
departamento,
salario
TENIENDO
CONTAR ( * ) = 1 ;

 

En el ejemplo dado, utilizamos el operador UNION ALL para combinar los datos de ambas tablas manteniendo los duplicados.

Luego usamos la cláusula GROUP BY para agrupar los datos combinados por todas las columnas. Finalmente, utilizamos la cláusula HAVING para garantizar que solo se seleccionen los registros con un recuento de uno (sin duplicados).

Producción:

Este método es un poco más complejo pero proporciona una visión mucho mejor a medida que obtiene los datos reales que faltan en ambas tablas.

Comparar dos tablas usando INNER JOIN

Si ha estado pensando, ¿por qué no utilizar una UNIÓN INTERNA? Estarías en el punto. Podemos usar INNER JOIN para comparar las tablas y encontrar los registros comunes.

Tome la siguiente consulta, por ejemplo:

SELECCIONAR
muestra_tb1. *
DE
muestra_tb1
UNIÓN INTERNA sample_tb2 ACTIVADA
muestra_tb1.employee_id = muestra_tb2.employee_id;

 

En este ejemplo, utilizamos SQL INNER JOIN para encontrar los registros que existen en ambas tablas en función de una columna determinada. Aunque esto funciona, a veces puede resultar engañoso ya que no está seguro de si los datos realmente faltan o están presentes en ambas tablas o solo en una.

Conclusión

En este tutorial, aprendimos todos los métodos y técnicas que podemos emplear para comparar dos tablas en SQL.