segundo - MySQL: diferencia de dos conjuntos de resultados
cuantas consultas por segundo soporta mysql (2)
Para realizar el resultado 1 - resultado 2, puede unir el resultado 1 con el resultado 2 y solo los elementos de salida que existen en el resultado 1. Por ejemplo:
SELECT DISTINCT result1.column
FROM result1 LEFT JOIN result2 ON result1.column = result2.column
WHERE result2.column IS NULL
Tenga en cuenta que no es una diferencia establecida, y no generará elementos en el resultado2 que no existan en el resultado1. Se establece la resta .
Ver también: http://www.bitbybit.dk/carsten/blog/?p=71
¿Cómo puedo obtener la diferencia de conjunto de dos conjuntos de resultados?
Digamos que tengo un conjunto de resultados (solo una columna en cada uno):
result1:
''a''
''b''
''c''
result2:
''b''
''c''
Quiero menos lo que está en resultado1 por resultado2: resultado1 - resultado2 tal que es igual a:
difference of result1 - result2:
''a''
Si quiere cosas en el result1
que no están en el resultado2, ¿qué pasa con:
SELECT distinct result1
FROM t1
WHERE result1 NOT IN (select distinct result2 from t2);
O:
SELECT distinct result
from t1 t
where NOT EXISTS (select 1 from t2 where result2 = t.result1)
NOTA: si result1
es un subconjunto de result2
, las consultas anteriores devolverán un conjunto vacío (no mostrarán las cosas en el resultado2 que no están en el result1
) por lo que no se establecen diferencias, pero también pueden ser útiles (probablemente sea más eficiente que la combinación externa).