2017-05-03 5 views
1

Ist es möglich, eine Gruppenkontrolle in mysql durchzuführen und eine Art Gruppenlimit zu haben? Auf diese Weise kann die Gruppe auf mehrere Ergebniszeilen aufgeteilt werden.Mysql group_concat geteilt durch Zählung

z.B.

wenn ich eine Tabelle mit dem Namen num wie so haben:

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

und ich verwende die Anweisung select group_concat(val) from num

ich das Ergebnis

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

Was ich tun möchte, ein gesetzt Gruppengrenze von 2 und erhalten das Ergebnis

1,2 
3,4 
5,... 

Nun ist die Verwendung Fall, den ich habe, ist Hunderttausende von Werten, die ich als ordentlich Gruppen von etwa 500.

Ist auswählen möchten es möglich?

Antwort

1

Sie können eine Benutzervariable verwenden, um eine Zeilennummer zu erstellen, und sie dann gruppieren, indem Sie die Zeilennummern durch die Gruppengröße dividieren.

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

Es tut Gruppe sie, aber nicht durch eine Standardmenge, hier sind zwei Beispiele für Gruppierungen: vals Gruppe A: 18,21,35,182,234,242,252,264,276,296,392,448,464 Gruppe B: 592,676,733,889,912,952,961 – danspants

+0

Es sollte Gruppe alle Zahlen von 1 ' 'to' 500' zusammen, dann alle Zahlen von '501' bis' 1000', und so weiter. – Barmar

+0

Ich habe eine bessere Lösung mit einer Benutzervariablen für die Gruppennummerierung gefunden. – Barmar