2011-06-09 17 views
5

Digamos que tengo la siguiente tabla de MySQL:¿Cómo puedo LIMITAR varias cláusulas WHERE en MySQL?

 
id | species 
------------ 
1 | dog 
2 | dog 
3 | dog 
4 | cat 
5 | cat 
6 | fish 
7 | fish 
8 | fish 

quiero obtener los identificadores de 2 perros, 1 gato y 1 pescado (que no tienen que estar en orden). Por ejemplo, {1, 2, 4, 6} sería un resultado válido.

¿Hay alguna manera de hacer esto en una consulta SQL? Hasta donde yo sé, LIMIT es un operador bastante simple que no puede hacer esto. Quizás DONDE se puede manipular? ¿O serían las consultas SQL múltiples la mejor manera de hacerlo?

Respuesta

9

Por lo que yo sé lo mejor que puede hacer es utilizar UNION para combinar los resultados de los tres SELECT s, ej .:

SELECT id, species FROM animals 
    WHERE species = 'dog' 
    LIMIT 2 
UNION 
SELECT id, species FROM animals 
    WHERE species = 'cat' 
    LIMIT 1 
UNION 
SELECT id, species FROM animals 
    WHERE species = 'fish' 
    LIMIT 1; 

# Producing: 
# 
# id | species 
# ---+-------- 
# 1 | dog 
# 2 | dog 
# 4 | cat 
# 6 | fish 
+4

y mejor uso 'UNIÓN all'. –

Cuestiones relacionadas