3

我有一个只有数字 ID 的表

ID
1
2
3
4
5
6
7
8
9
10

我想将这个 id 分解并连接(组)成 5s 或 20s 的组,ej。

GROUPS
1,2,3,4,5
6,7,8,9,10
11,12,13,14,15

我怎样才能用 SQL 做到这一点?

更新:

带有排序 ID 的 SELECT

  SELECT GROUP_CONCAT(id ORDER BY id) AS GROUPS
  FROM `test`
  GROUP BY (id - 1) DIV 5

结果:

  GROUPS
  1,2,3,4,5
  6,7,8,9,10
  11,12,13,14,15
  16,17,18,19,20
  21,22,23,24,25
  26,27,28,29,30
  31,32,33,34,35

选择第二个未排序的表

  SELECT GROUP_CONCAT(id ORDER BY id) AS GROUPS
  FROM `test2`
  GROUP BY (id - 1) DIV 5

结果:

  GROUPS
  3,5
  10
  12
  16
  23,24,25
  32,35
  43,44
  47
  55
  61
  68,70
  77
  84
  89
  91,92,95
  97,100
4

2 回答 2

3

对于 MySQL:

SELECT GROUP_CONCAT(id ORDER BY id) AS GROUPS
FROM yourtable
GROUP BY (id - 1) DIV 5

在线查看它:sqlfiddle

于 2012-05-30T00:34:06.163 回答
2

对于未排序的 ID:

SET @rank=0;
SELECT
    id,
    @rank:=@rank+1 AS rank,
    GROUP_CONCAT(id ORDER BY id) AS GROUPS
FROM  `test2`
GROUP BY (@rank ) DIV 5

结果:

+----+------+----------------+
| id | rank | GROUPS         |
+----+------+----------------+
|  1 |    1 | 1,3,5,7,9      |
| 13 |    7 | 11,13,15,17,19 |
| 29 |   15 | 21,23,25,27,29 |
| 31 |   16 | 31,33,35,37,39 |
| 45 |   23 | 41,43,45,47,49 |
| 51 |   26 | 51,53,55,57,59 |
| 61 |   31 | 61,63,65,67,69 |
| 77 |   39 | 71,73,75,77,79 |
| 81 |   41 | 81,83,85,87,89 |
| 93 |   47 | 91,93,95,97,99 |
+----+------+----------------+

非常感谢您的帮助,没有您的帮助我无法知道!

于 2012-05-30T01:36:34.963 回答