3

数値 ID のみのテーブルがあります

ID
1
2
3
4
5
6
7
8
9
10

そして、この ID を 5 または 20 のグループに分割して連結 (グループ化) したいと考えています。

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

ソートされていない 2 番目のテーブルを使用した SELECT

  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 に答える