Registros diferentes entre dos tablas MySQL

Registros diferentes entre dos tablas. Si deseamos encontrar los filas diferentes entre dos tablas en MySQL, es decir si hay una columna en la tabla 2 que estaba vinculada a la columna de ID de la tabla 1. Sin embargo, entre esas dos tablas queremos filtrar los registros diferentes.

En este artículo explicaremos estrategias y consultas para obtener el resultado deseado.

Estructuras de las tablas.

Table 1          table 2

ID | name      ID | value (Este es el ID de la tabla 1) 
1  | uno       1  | 1
2  | dos       2  | 2
3  | tres      3  | 4
6  | seis      4  | 4
7  | siete     5  | 5
               6  | 5
               7  | 6
               8  | 7
               9  | 1
               10 | 1

Si observamos la tabla 2, varios ID de la tabla 1 están en varias filas y la idea es obtener todas las que no están presentes en la tabla 1 como resultado de la consulta SQL.

La idea es obtener el siguiente resultado en una consulta.

Resultado (Registros diferentes)

ID (form table 2) | value
 3                | 4
 4                | 4
 5                | 5
 6                | 5

¿Cómo hacer una consulta que devolverá los registros diferentes?

A continuación, veremos varias formas para lograr nuestro objetivo, entre ellas veremos sentencias en las consultas.

Registros diferentes entre dos tablas MySQL

Podemos usar dos opciones para lograr el objetivo y estos son:

Primer forma: Usando NOT EXISTS

Los operadores «exists» y «not exists» se emplean para determinar si hay o no datos en una lista de valores (Tabla MySQL).

Podemos usar estos operadores en subconsultas correlacionadas para restringir el resultado de una consulta exterior a los registros que cumplen la subconsulta (consulta interior). Veamos un ejemplo de uso.

select * 
from table2 A
Where Not exists (select 1 from table1 B Where A.ID = B.value)

Segunda forma: Usando LEFT OUTER JOIN

La sentencia LEFT OUTER JOIN permite realizar lecturas con uniones de tablas que excluyen de las condiciones de intersección la tabla indicada en la parte izquierda. Veamos el ejemplo completo.

select *
from table2 A 
LEFT OUTER JOIN table1 B 
on A.ID = B.value
Where B.value IS NULL

Usando NOT IN

Por ejemplo, si tenemos dos tablas (test1, test2) con los campos «Factura» y «Monto» en cada una, necesito crear una consulta que me devuelva únicamente los registros que se encuentren en Test1 pero que no estén en Test2. Veamos la consulta SQL:

SELECT Factura, Monto 
FROM Test1 
WHERE Factura NOT IN (SELECT Factura from Test2) 
AND Monto NOT IN (SELECT Monto from Test2)

Otro ejemplo mas simple

select * from table_B where IMEI not in(Select IMEI from table_A)

Si lo que deseamos son valores diferentes de ese campo únicamente, un NOT IN o NOT EXISTS debería darnos resultados deseados:

SELECT t1.Descripcion, t1.Marca, t1.Modelo
FROM Articulos1 as t1
WHERE NOT EXISTS (SELECT 1 FROM Articulos2 as t2 WHERE t1.CodArt = t2.CodArt)

Conclusión

En este artículo hemos aprendido a verificar la existencia de registros diferentes entre dos tablas de MySQL. Por lo tanto, el hecho de verificar registros diferentes ya podríamos optimizar nuestras tablas y es más podríamos crear relaciones de tablas a través de una llave foránea.

Si no queremos tener registros basuras en nuestras tablas es recomendable relacionar tablas con el ID primario y la llave foránea, con esta relación de tablas los registros serán más precisos.

Espero que esta breve explicación les ayude en sus proyectos web.

Me fascina la programación en diversos lenguajes y mas aún si son sistemas web o páginas web.

Entradas relacionadas

PHP Introducción

PHP Introducción

El código PHP se ejecuta en el servidor. ¿Qué es PHP? PHP es un acrónimo de «PHP: preprocesador de hipertexto» PHP es un lenguaje de secuencias de…

Crear buscador avanzado con PHP y MySQL

Crear buscador avanzado con PHP y MySQL

Crear buscador avanzado con PHP y MySQL. Vamos a crear un tutorial que nos ayudara a crear una funcionalidad de búsqueda avanzada con PHP y MySQL. Por…

Eliminar un elemento de un array en PHP

Eliminar un elemento de un array en PHP

Eliminar un elemento de un array en PHP. Hay diferentes formas de eliminar un elemento de matriz, donde algunas son más útiles que otras, todo depende de…

Cómo recortar texto usando PHP

Cómo recortar texto usando PHP

Cómo recortar texto usando PHP. Si necesitas cortar una cadena de texto o párrafos en PHP estás en el lugar correcto. En este artículo voy a enseñarte…

Convertir formato de fecha en PHP más ejemplos

Convertir formato de fecha en PHP más ejemplos

Convertir formato de fecha en PHP. Si estas tratando de convertir una fecha de yyyy-mm-dd a dd-mm-yyyy, recuerda que en este articulo abordaremos este tema ampliamente hasta…

Diferencias entre Echo y Print en PHP

Diferencias entre Echo y Print en PHP

Diferencias entre Echo y Print. Estas son usadas casi indistintamente para imprimir contenido en pantalla en el lenguaje PHP, por ejemplo, que queremos imprimir una cadena o…

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *