2011-01-06 21 views
8

Ho due query che devo eseguire, non posso unirmi a loro Ma le tabelle risultanti hanno la stessa struttura.Append Risultati da due query e output come tabella singola

Per esempio ho

select * from products where producttype=magazine 

select * from products where producttype = book 

devo combinare il risultato di queste due domande, e poi uscita come uno risultato singolo. Devo farlo all'interno di una stored procedure.

PS Questi sono solo esempi forniti, ho una struttura di tabella complessa. La cosa principale è che non posso unirmi a loro.

+0

rimossi tag le stored procedure –

risposta

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

+ 1 Tieni presente che 'union' rimuoverà le voci duplicate dai due set. Se puoi garantire che i due set siano distinti, o che non ti interessino i duplicati, allora "union all" funzionerà meglio, specialmente se i tuoi set di risultati aumentano. –

+2

Non c'è bisogno di unione ... può solo usare IN. Molto più efficiente. – IamIC

+0

Grazie mille, ho solo bisogno di questo. Btw. per consentire le voci duplicate, è possibile aggiungere un ID univoco artificiale. In questo modo in MySQL: 'select *, UUID() dai prodotti where producttype = magazine union select *, UUID() dai prodotti where producttype = book' – VaclavSir

7

Oppure, semplicemente una singola query ...

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

penso che magazin e libro sono i valori VARCHAR e non le colonne della tabella

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

+1 Questa è probabilmente la risposta corretta effettiva. – IamIC

Problemi correlati