2011-06-09 53 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