soporta segundo por optimizar lentas cuantas consultas mysql set-difference

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).