2011-01-06 10 views
8

Ich habe zwei Abfragen, die ich ausführen muss, ich kann mich ihnen anschließen Aber ihre resultierenden Tabellen haben die gleiche Struktur.Ergebnisse von zwei Abfragen anhängen und als einzelne Tabelle ausgeben

Zum Beispiel habe ich

select * from products where producttype=magazine 

select * from products where producttype = book 

ich das Ergebnis dieser beiden Abfragen zu kombinieren, und dann gibt sie als ein einzelnes Ergebnis. Ich muss dies in einer gespeicherten Prozedur tun.

PS Dies sind nur Beispiele, die ich zur Verfügung gestellt habe, ich habe eine komplexe Tabellenstruktur. Hauptsache, ich kann mich ihnen nicht anschließen.

+0

entfernt Tag gespeicherten Prozeduren –

Antwort

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

+ 1 Beachten Sie, dass "union" doppelte Einträge aus den beiden Sets entfernt. Wenn Sie garantieren können, dass die beiden Sätze unterschiedlich sind oder Sie sich nicht um Duplikate kümmern, wird "union all" besser funktionieren, besonders wenn Ihre Ergebnismengen größer werden. –

+2

Keine Notwendigkeit zu Union ... kann nur IN verwenden. Viel effizienter. – IamIC

+0

Vielen Dank, ich brauchte das nur. BTW. Um doppelte Einträge zuzulassen, können Sie eine künstliche eindeutige ID hinzufügen. Auf diese Weise in MySQL: 'wählen Sie *, UUID() aus Produkten wo Produkttyp = Magazin Union wählen Sie *, UUID() von Produkten wo Produkttyp = Buch" – VaclavSir

7

Oder nur eine einzige Abfrage ...

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

denke ich, dass magazin und Buch varchar Werte sind und keine Spalten in der Tabelle

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

+1 Dies ist wahrscheinlich die richtige Antwort. – IamIC

Verwandte Themen