2017-05-03 112 views
1

是否可以在mysql中執行group_concat並且具有某種組限制?從而允許組在多個結果行上分割?Mysql group_concat按計數分割

例如

,如果我有一個表中名爲num像這樣:

val 
    --- 
    1 
    2 
    3 
    4 
    5 
    ... 

,我使用語句select group_concat(val) from num

我得到的結果

1,2,3,4,5,... 

我想要做的是設置什麼組限數2並得到結果

1,2 
3,4 
5,... 

現在我的使用案例是成千上萬的值,我想選擇500個左右的整齊組。

這可能嗎?

回答

1

您可以使用用戶變量創建行號,然後通過將行號除以組大小進行分組。

SELECT GROUP_CONCAT(val) AS vals 
FROM (SELECT val, @rownum := @rownum + 1 AS rownum 
     FROM (SELECT val FROM nums ORDER BY val) AS vals 
     CROSS JOIN (SELECT @rownum := -1) AS vars) AS temp 
GROUP BY FLOOR(rownum/500) 
+0

它確實它們分組,但不是一個標準的數量,這裏有分組的兩個示例:瓦爾斯 組A:B 18,21,35,182,234,242,252,264,276,296,392,448,464 組:592,676,733,889,912,952,961 – danspants

+0

它應該組中的所有從'1號''將'500'加在一起,然後將所有數字從'501'改爲'1000',依此類推。 – Barmar

+0

我已經想出了一個更好的解決方案,使用用戶變量作爲組編號。 – Barmar