2011-01-06 6 views
8

Tengo dos consultas que tengo que ejecutar, no puedo unirlas Pero sus tablas resultantes tienen la misma estructura.Agregar resultados de dos consultas y salida como una sola tabla

Por ejemplo tengo

select * from products where producttype=magazine 

select * from products where producttype = book 

tengo para combinar el resultado de estas dos consultas, y entonces la salida como un resultado único. Tengo que hacer esto dentro de un procedimiento almacenado.

PD Estos son solo ejemplos que proporcioné, tengo una estructura de tabla compleja. Lo principal es que no puedo unirme a ellos.

+0

etiqueta almacenado procedimientos retirados –

Respuesta

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

+ 1 Tenga en cuenta que 'union' eliminará las entradas duplicadas de los dos conjuntos. Si puede garantizar que los dos conjuntos son distintos, o si no le importan los duplicados, entonces 'union all' tendrá un mejor rendimiento, especialmente a medida que los conjuntos de resultados aumenten. –

+2

No hay necesidad de unión ... solo puede usar IN. Mucho más eficiente. – IamIC

+0

Muchas gracias, solo necesitaba esto. Por cierto. para permitir entradas duplicadas, puede agregar alguna identificación única artificial. De esta forma en MySQL: 'select *, UUID() de productos donde producttype = revista unión select *, UUID() de productos donde producttype = book' – VaclavSir

7

O, simplemente, una sola consulta ...

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

creo que magazin y el libro son valores varchar y no columnas en la tabla

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

+1 Probablemente sea la respuesta correcta. – IamIC

Cuestiones relacionadas