MySQL按列顺序排列,值相等

时间:2015-09-23 16:10:19

标签: mysql sql-order-by

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

例如,如果表格中有一个名为“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中执行此操作?

1 个答案:

答案 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

See Fiddle

注意任何备用动物都会附加到最后..这就是你想要的吗?