首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL逐列排序,值的等量传播

问MySQL逐列排序,值的等量传播
EN

Stack Overflow用户
提问于 2015-09-23 16:10:19
回答 1查看 154关注 0票数 1

我希望从表中选择数据子集,但希望确保从列中获得不同类型的相同组合。

例如,如果表中有一个名为“动物”的列,其中填充了以下内容:

代码语言:javascript
复制
name, animal
'Bob', 'cat'
'Fred','cat'
'Jim','dog'
'Sam','dog'
'Andy','snake'
'Paul','snake'

我想按照动物类型均匀混合的顺序选择行,因此结果是:

代码语言:javascript
复制
['Bob','cat'],
['Jim','dog'],
['Andy','snake'],
['Fred','cat'],
['Sam','dog'],
['Paul','snake']

类似于随机化,但确保所有类型都平等地包括在内。在mysql中有办法做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-23 16:59:26

这为表中的每个名称提供了一个索引,该索引引用它们拥有的动物,然后依次选择每个索引动物:

代码语言:javascript
复制
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

见Fiddle

注意,所有多余的动物都会被追加到最后。这就是你想要的吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32744520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档