2011-06-09 56 views
5

比方说,我有以下MySQL表:如何限制MySQL中的各种WHERE子句?

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

我想要得到的2只狗,猫1和1种鱼(他们没有被按顺序)的ID。例如,{1,2,4,6}将是有效的输出。

有没有办法在一个SQL查询中做到这一点?据我所知,LIMIT是一个相当简单的运算符,不能做到这一点。也许哪里可以被操纵?或者多个SQL查询是否是这样做的最佳方式?

回答

9

据我知道你能做的最好的就是用UNION的结果结合三个SELECT S,例如: -

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

,更好地利用'UNION ALL'。 – 2011-06-09 05:11:03