假设我有以下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/