假设我有以下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查询是最好的方法吗?
答案 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