2011-06-22 18 views
7

Esta pregunta está en la misma línea que this question, pero ligeramente diferente.Comparando los valores de 2 tablas y enumerando las filas que son diferentes

Tengo 2 tablas, TableA y TableB donde TableB es realmente solo una copia de seguridad de TableA, la única diferencia real es que TableB tiene una columna "ACTION" que indica la acción que se tomó en TableA. Por ahora estoy ignorando esa columna (aunque lo ideal sería agregarla a los resultados finales, así que no dude en sugerir eso también: D)

Quiero comparar las dos tablas y obtener las filas de cada tabla que son diferentes He usado el ejemplo Jeff's SQL Server Blog - The shortest, fastest, and easiest way to compare two tables in SQL Server: UNION ! para crear una consulta, sin embargo, devuelve solo las filas de TableB que son diferentes.

¿Cuál es el enfoque recomendado?

Nota: el código es exactamente igual que el ejemplo en el segundo enlace, por lo que no voy a publicar cualquiera de aquí

+0

¿Estás seguro de que hay filas en la Tabla A que no están en la Tabla B? ¿Puede proporcionar un conjunto simplificado de datos que ilustre el problema? –

+0

No debería * haber * filas en la Tabla A que no estén en la Tabla B, pero eso es aceptable. Lo único que quiero hacer ahora es comparar las filas en TableA y TableB. –

Respuesta

8

Esto le dará todo en una que no está en B

select * from tableA 
Except 
select * from tableB 

y viceversa

select * from tableB 
Except 
select * from tableA 

Editar: Usuario de esta manera:

(select * from tableA 
Except 
select * from tableB) 
union all 
(select * from tableB 
Except 
select * from tableA) 
+0

Intenté esto como está, desafortunadamente enumeró dos vistas diferentes para mí en MS SQL Server Mgt Studio. No estoy lo suficientemente familiarizado con SQL para combinar los dos resultados. Aunque tengo la sensación de que va a ser ridículamente simple. –

Cuestiones relacionadas