我如何限制MySQL中的各种WHERE子句?

时间:2011-06-09 05:01:45

标签: mysql sql where-clause

假设我有以下MySQL表:

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

我想得到2只狗,1只猫和1只鱼的ids(它们不必按顺序排列)。例如,{1,2,4,6}将是有效输出。

有没有办法在一个SQL查询中执行此操作?据我所知,LIMIT是一个相当简单的操作员,不能这样做。也许哪里可以操纵?或者多个SQL查询是最好的方法吗?

1 个答案:

答案 0 :(得分:9)

据我所知,您可以做的最好的事情是使用UNION来合并三个SELECT的结果,例如:

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