Вопрос

Как я могу получить разницу на множестве двух результатов?

Скажем, у меня есть набор результатов (только один столбец в каждом):

result1:
'a'
'b'
'c'

result2:
'b'
'c'

Я хочу минус, что в результате 1 по результатам2: Результат1 - Результат2 Так что это равно:

 difference of result1 - result2:
 'a'
Это было полезно?

Решение

Для выполнения результата1 - Результат2, вы можете присоединиться к результатам1 с результатом 2 и только выходные элементы, которые существуют в результате1. Например:

SELECT DISTINCT result1.column
FROM result1 LEFT JOIN result2 ON result1.column = result2.column
WHERE result2.column IS NULL

Обратите внимание, что не набор разница, и не выводят элементы в результате2, которые не существуют в результате1. Это установлено вычитание.

Смотрите также: Веб-архив версия соответствующего блога.

Другие советы

Если вы хотите вещей в result1 которые не в result2, что о:

SELECT distinct result1
FROM t1 
WHERE result1 NOT IN (select distinct result2 from t2);

Или:

SELECT distinct result
from t1 t
where NOT EXISTS (select 1 from t2 where result2 = t.result1)

Примечание: если result1 это подмножество result2 Тогда вышеперечисленные запросы вернется пустой набор (они не покажут вам вещи в result2 которые не в result1) Итак, они не устанавливают разницу, но могут быть полезны тоже (вероятно, это более эффективно, чем внешнее соединение).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top