2011-01-06 4 views
8

Mam dwa zapytania, które muszę uruchomić, nie mogę do nich dołączyć Ale ich wynikowe tabele mają taką samą strukturę.Dołącz wyniki z dwóch zapytań i danych wyjściowych jako pojedynczej tabeli

Na przykład mam

select * from products where producttype=magazine 

select * from products where producttype = book 

muszę połączyć wynik tych dwóch zapytań, a następnie wyjście to jako jeden wynik. Muszę to zrobić wewnątrz procedury przechowywanej.

PS Są to tylko przykłady, które dostarczyłem, mam złożoną strukturę tabeli. Najważniejsze, że nie mogę do nich dołączyć.

+0

usunięto tag procedury przechowywane –

Odpowiedz

26
select * from products where producttype=magazine 
union 
select * from products where producttype = book 
+6

+ 1 Pamiętaj, że 'union' usunie zduplikowane wpisy z dwóch zestawów. Jeśli możesz zagwarantować, że dwa zestawy są odrębne, lub nie dbasz o duplikaty, wtedy "union all" będzie działać lepiej, zwłaszcza gdy twoje zestawy wyników będą większe. –

+2

Nie ma potrzeby łączenia ... może po prostu użyć IN. O wiele bardziej wydajny. – IamIC

+0

Wielkie dzięki, po prostu to potrzebowałem. Btw. aby umożliwić zduplikowane wpisy, możesz dodać sztuczny unikalny identyfikator. W ten sposób w MySQL: 'select *, UUID() z produktami gdzie Producttype = magazyn unia select *, UUID() z produktami gdzie Producttype = book' – VaclavSir

7

Albo tylko jedno zapytanie ...

select * 
    from products 
    where producttype = magazine 
     or producttype = book 
9

myślę że magazin i książka są wartościami varchar, a nie kolumny w tabeli

select * from products where producttype in ('magazine', 'book'); 
+2

+1 To jest najprawdopodobniej rzeczywista prawidłowa odpowiedź. – IamIC

Powiązane problemy