我希望从表格中选择一个数据子集,但我希望确保从列中获得不同“类型”的相同组合。
例如,如果表格中有一个名为“animal”的列,其中填充了以下内容:
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中执行此操作?
答案 0 :(得分:0)
这为表中的每个名称提供了一个参考他们拥有的动物的索引,然后依次选择每个索引动物:
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
注意任何备用动物都会附加到最后..这就是你想要的吗?