2012-02-09 20 views

Respuesta

9

Desde el enlace que ya ha proporcionado:

VALORES (1, 'uno'), (2, 'dos'), (3, 'tres');
Esto devolverá una tabla de dos columnas y tres filas. Es efectivamente equivalente a:
seleccione 1 AS column1, 'uno' AS column2
UNION ALL
selecciona 2, 'dos'
UNION ALL
SELECT 3, 'tres';

por lo que necesita

select * from 
table1, 
(
    SELECT 1 AS val 
    UNION ALL 
    SELECT 2 
    UNION ALL 
    SELECT 3 
)b 
+1

Esto es equivalente a mi ejemplo, pero parece ser una gran cantidad de trabajo en oposición a la sintaxis de Postgres. ¿MySQL tiene esa opción? – crististm

+0

Es un poco más trabajo que hacer ya que MySQL no tiene ninguna sintaxis VALUES. Si tiene muchos valores que necesita recuperar, puede crear un procedimiento para dividir sus valores por un delimitador, insertarlos en una tabla temporal y luego seleccionarlos adecuadamente. ¿Eso sería más fácil para ti? –

+0

En realidad, no quiero recuperar estos valores. Quiero hacer algo más complejo que "en", así que los necesitaría en una tabla temporal de algún tipo – crististm

2

Ésta es otra manera de moverse por la falta de WITH apoyo en MySQL:

create temporary table tmp (c int); 

insert into tmp (c) 
values (1), (2), (3); 

select * from tmp; 
+4

Gracias por la respuesta, esto es muy triste. –