2010-03-11 29 views
5

tengo dos tablas de MySQLcómo obtener la tabla de filas que faltan en MySQL

tablaA

colA1 colA2 
1  whatever 
2  whatever 
3  whatever 
4  whatever 
5  whatever 
6  whatever 

segunda tabla se deriva básicamente de tablaA pero tiene algunas filas eliminadas

TableB

colB1 colB2 
1  whatever 
2  whatever 
4  whatever 
6  whatever 

cómo puedo escribir una consulta para obtener la tabla de filas faltantes de las dos tablas anteriores

es decir

colC1 colC2 
3  whatever 
5  whatever 

Respuesta

8
SELECT t1.* 
FROM TableA t1 LEFT JOIN 
    TableB t2 ON t1.ID = t2.ID 
WHERE t2.ID IS NULL 
0

¿Qué pasa algo como esto:

select * 
from tableA 
where not exists (
    select 1 
    from tableB 
    where tableB.colB1 = tableA.coldA1 
) 


es decir, se seleccionan los datos de tableA para los cuales no hay datos equivalentes en tableB.

0
select * from tableA where colA1 not in (select colA1 from tableB ) ; 
+1

No @Bobby cierto. Ver este enlace: http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/ – fancyPants

Cuestiones relacionadas