2017-05-09 32 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