2009-10-15 11 views
12

Potrzebuję połączyć dwa wyniki zapytania, jak w związku, ale chcę zachować tylko różnicę między tymi dwoma wynikami. czy to możliwe?MySQL - Czy możliwe jest uzyskanie "różnicy" dwóch wyników zapytania?

Po prostu wybieram WSZYSTKIE zasoby w Zapytaniu 1 i NIEZALECANE zasoby w Zapytaniu 2, oczywiście potrzebuję DOZWOLONYCH zasobów w moim ostatnim wyniku.

W pseodo kodu:

Query1 - Query2 

queryResult 1:

+-------+ 
| id | 
+-------+ 
| 1 | 
+-------+ 
| 2 | 
+-------+ 
| 3 | 
+-------+ 
| 4 | 
+-------+ 
| 5 | 
+-------+ 
| 6 | 
+-------+ 

queryResult 2:

+-------+ 
| id | 
+-------+ 
| 2 | 
+-------+ 
| 5 | 
+-------+ 

potrzebne:

+-------+ 
| id | 
+-------+ 
| 1 | 
+-------+ 
| 3 | 
+-------+ 
| 4 | 
+-------+ 
| 6 | 
+-------+ 
+0

Wymóg jest niejasny. Wyjaśnienie tekstowe wspomina o WSZYSTKIM z zapytań1, ale ten przykład zaprzecza temu. Spróbujmy zdefiniować wymóg wyłącznie za pomocą przykładu. Jeśli zapytanie2 miało 7 lub 0, to czy te wartości byłyby zawarte w różnicy? – mjv

+1

Zgadzam się, że tytuł nie jest zgodny z treścią pytania, ale samo pytanie jest dość jasne. OP prosi o odjęcie: wszystkie zasoby, które nie są "niedostępne": "A - B" – nickf

+0

Przez minutę myślałem, że prosił o odjęcie wartości pól zapytania 1 do zapytania 2 wartości pól. – putolaruan

Odpowiedz

40

Podoba Ci się to, stosując NOT IN:

SELECT id FROM queryOneTable 
WHERE id NOT IN (
    SELECT id FROM queryTwoTable 
) 
+1

tak łatwe, ale tak działa :) – Ropstah

4

testowałem tej kwerendy w SQLEXPRESS, ponieważ nie mam MySQL. Zakładam, że działa tak samo.

select x.id 
from x 
left join y on x.id = y.id 
where y.id is null 
+0

powinno to być 'select x.id' –

1

Lewa dołączyć podejście jest bardziej uniwersalny, ponieważ można go używać w dwóch tabelach (lub dowolnych dwóch zestawów wyników zapytań) gdzie wyjątkowość nie polega jeden id ale combo kilku wartości kolumny. Również uważa się, że lepszym SQL (lub przynajmniej nim był) jest opanowanie zewnętrznych sprzężeń (s.a.), ponieważ jest bardziej wydajny niż pisanie zagnieżdżonych selekcji.

Powiązane problemy