Para
(select * from query1 EXCEPT select * from query2)
UNION ALL
(select * from query2 EXCEPT select * from query1)
he hecho un poco de juicio por postgres 9.4
, y aquí están mis resultados.
[1] menos no es compatible, por lo que tenga que utilizar EXCEPT
según lo dicho por @Bogdan
[2] Utilizando sólo EXCEPT
no tiene en cuenta los duplicados por lo que tuvo que usar EXCEPT ALL
[3] EXCEPT ALL
requieren ese orden de columna en el resultante debe ser el mismo, así que en , la consulta QUERY1
y QUERY2
deben devolver el mismo orden de columna o tenemos que ajustar la consulta y asegurarse de que el orden de las columnas sea el mismo (puede ser esto en lógica de aplicación)
Creo que si tenemos en cuenta los 3 puntos anteriores, podemos estar 100% seguros de que los datos devueltos por dos consultas en el conjunto de datos son exactamente iguales.
se actualizará si encuentro más borde caso que puede fallar.
¿Desea comparar las dos cadenas SELECT? o los resultados? Proporcione más información. – wegginho
'Comprobar si dos' seleccionar 's son equivalentes', dónde verificarlo en una consulta ¿Procedimiento almacenado? Ver? Sea descriptivo. –
posible duplicado de [Proving SQL query equivalency] (http://stackoverflow.com/questions/56895/proving-sql-query-equivalency) –