我希望从表中选择数据子集,但希望确保从列中获得不同类型的相同组合。
例如,如果表中有一个名为“动物”的列,其中填充了以下内容:
name, animal
'Bob', 'cat'
'Fred','cat'
'Jim','dog'
'Sam','dog'
'Andy','snake'
'Paul','snake'我想按照动物类型均匀混合的顺序选择行,因此结果是:
['Bob','cat'],
['Jim','dog'],
['Andy','snake'],
['Fred','cat'],
['Sam','dog'],
['Paul','snake']类似于随机化,但确保所有类型都平等地包括在内。在mysql中有办法做到这一点吗?
发布于 2015-09-23 16:59:26
这为表中的每个名称提供了一个索引,该索引引用它们拥有的动物,然后依次选择每个索引动物:
SELECT name, animal
FROM (
SELECT CASE
WHEN @animal = animal THEN @row := @row + 1
ELSE @row := 0
END row_num,
name,
@animal := animal animal
FROM owner
JOIN (SELECT @animal := null, @row := 0) init
ORDER BY animal, name
) temp
ORDER BY row_num, animal注意,所有多余的动物都会被追加到最后。这就是你想要的吗?
https://stackoverflow.com/questions/32744520
复制相似问题