2017-05-09 31 views
0

不知道这是可能的...MYSQL排序数据成Pattern

鉴于这一数据在MYSQL:

AAA 
BBB 
BBB 
CCC 
AAA 
CCC 
DDD 
DDD 

我怎么能回到在这样的格局排序的结果集:

AAA 
BBB 
CCC 
DDD 
AAA 
BBB 
CCC 
DDD 
+4

没有PRIMARY KEY,你很可能会进入一个痛苦的世界。 – Strawberry

+0

我认为这个问题目前尚未定义。所有四个“类别”的记录总是会有相同数量的记录吗?如果不是,那么在用完“CCC”记录之后会有什么期望的结果,但还有其他许多呢?假设这些记录不仅包含该列,而且包含更多且具有不同值(即使是“类别”) - 您是否需要特定顺序的那些记录,或者哪个记录与CCC匹配? – CBroe

+0

我有一个现实世界的问题,包括一个主索引表。我可能已经过分简化了我的问题。但是,接受的答案对我的情况来说是完美的。 – roelleor

回答

2

可以使用变量此:

SELECT mycol 
FROM (
    SELECT mycol, 
      @rnk := IF(@col = mycol, @rnk + 1, 
        IF(@col := mycol, 1, 1)) AS grp 
    FROM mytable 
    CROSS JOIN (SELECT @rnk := 0, @col := '') AS vars 
    ORDER BY mycol) AS t 
ORDER BY grp, mycol; 

Demo here

+0

绝对完美,非常感谢! – roelleor