假设我有以下MySQL表:

id |物种
------------
1 |狗
2 |狗
3 |狗
4 |猫
5 |猫
6 |鱼
7 |鱼
8 |鱼

我想获取2条狗,1条猫和1条鱼的ID(它们不一定要按顺序排列)。例如,{1、2、4、6}将是有效的输出。

有没有一种方法可以在一个SQL查询中执行此操作?据我所知,LIMIT是一个相当简单的运算符,无法做到这一点。也许可以在哪里操纵?还是多个SQL查询是执行此操作的最佳方法?

最佳答案

据我所知,您可以做的最好是使用 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

关于mysql - 如何限制MySQL中的各种WHERE子句?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6288295/

10-13 23:10