Comparar dos tablas en SQL

Como por tercera vez me he topado con la necesidad de comparar 2 tablas identicas que se encuentran ya sea en servidores diferentes, o simplemente es para comparar que registros sufrieron cambios en un periodo de tiempo.

Y como por tercera vez tuve que preguntarle a la misma persona jaja  y para ya no volverle a preguntar mejor lo escribo aquí.

si en algún momento necesitan comparar 2 tablas IDENTICAS (misma cantidad de campos) aquí les va el query que necesitan hacer

SELECT * FROM tabla1 t1
WHERE not exists (
SELECT * FROM tabla2 t2 WHERE t1.campo1 = t2.campo2 and t1.campo2 = t2.campo2 ….
.
.
.
)

con esto obtendran un listado de los registros que sufrieron cambios en alguno de los campos, todavía me falta buscar la manera de poder obtener únicamente los campos que cambiaron, porque para mi caso eran casi 500 campos y tuve que revisar uno por uno, si alguien sabe como hacer esto mas rápido será de mucha ayuda

saludos


12 comments

  1. Buen dia Daniel.
    Te respondio alguien acerca de como encontrar los campos que sufrieron cambios?
    Estoy justamente con ese problema, como detectar los campos que son diferentes entre los registros de ambas tablas.
    Si sabes como hacerlo, agradeceria muchisimo tu ayuda.
    Saludos!

  2. HOla quiero saber como comparar dos tablas en una tengo 8 números y en la otra 12. La que tiene 12 contiene los 8 números de la anterior mas 4 números.
    Gracias.

    Gaston

  3. que tal Gaston…

    deberias intentar algo asi como

    select a.inumero from tablacon12numeros a
    full outer join tablacon8numeros b on a.inumero = b.inumero

    te debe de ayudar

    saludos

  4. Hola yo estoy con algo muy parecido pero lo que requiero es hacer un update de un campo que de una tabla que esta en el mismo servidor pero con nombre de bases de datos distintas.

    tengo lo siguiente:

    base de datos de backups: bd1, tabla: noticias, campos: titulo y campo par1

    base de datos destino: bd2, tabla: noticias, campos: titulo y campo par1

    requiero hacer una consulta que me compare los campos par1 y si coinsiden haga un update en el campo titulo de la base datos de backups a destino.

    por que hago esto?
    me han hakeado y me pusieron datos en todo el campo de titulo lo mismo ahora debo de buscar una forma para remplazar y poner los titulo que considan con los parrafos.

    alguien me puede ayudar por favor.

  5. !!OJO!!
    No fuciona con tablas que contegan campos nulos!!

    cree unSP q me crea toda la sentencia de comparacion Xq tengo tablas d hasta 300 campos, y lo ejecuta pero no funcioa si la tabla tiene nulos.

  6. A mi me sirvio de esta manera para saber cuales son los registros que me hacían falta en la otra tabla

    SELECT TABLA1.* FROM TABLA1 LEFT JOIN TABLA2
    ON TABLA1.CAMPO_A = TABLA2.CAMPO_A WHERE TABLA2.CAMPO_A IS NULL;

    Esta consulta me regreso los registros faltantes en la tabla 2 .

    Espero que le sirva a alguien

  7. Campos de Tabla1(cveempresa,cveempleado)
    Campos de TablaA(cveempresa,cveempleado)
    Esos dos campos son una primary compuesta, los empleados de Tabla1 estan ligados a la TablaA.
    La tablaA tiene los datos correctos.

    No se eliminan empleados se pone su estatus=’baja’ y solo se les asigna un nueva cve empleado en la TablaA pero ahora.

    si el empleado Miguel tenia la cveEmpleado=0000258 y cveempresa=0007 en TablaA y en Tabla1.
    pero ahora ya cambio de empresa y ahora tiene cveEmpleado=0000500 y cveempresa=0005

    Lo que quiero hacer es buscar que empleados de Tabla1 ya no corresponden en la tablaA ose que ya estan, asi lo tengo:

    SELECT * FROM BDD1..usuarios u where not exists (
    * from [BDD2]..[trabajadores] t
    where (t.cveempresa=u.cveempresa and t.cvetra=u.NoEmpleado) and t.estatus=’Activo’) and u.estatus=’Activo’

  8. buenas tardes, tengo 2 tablas, en una tengo 300 (id, tipo_id)registros en la otra 1000 (id, tipo_id, depto), en los 1000 deben estar los 300, pero necesito saber cuales son, donde estan por depto, id y tipo_id

  9. Muchas gracias Daniel’s me sirvió mucho. El día que esté pegado en algo, ahí tiene mi mail, y si le puedo ayudar en algo con mucho gusto.
    Hasta pronto.

  10. hola mire yo tengo una duda
    Var = “SELECT descripcion ” _
    & “FROM tipos_equipos ” _
    & “WHERE tipos_equipos.descripcion LIKE ‘” & “*” & Me.txtno.Value & “*” & “‘ ” _

    como vera en mi tabla tipos_equipos tengo un campo que deseo mostrar se llama no_serie pero igual quiero mostrar un vampo llamado descripcion de otra tabla llamada tipos_equipos es para hacer una busqueda osea cuando ingrese no_serie (1145662s6) en un texbox diferente osea descripcion paresca (impresora) ejemplo.

Leave a Reply

Your email address will not be published.

Para evitar SPAM realiza la siguiente operación: *