我有这样一个mysql表:
+--------+--------------+
| idform | user_id |
+--------+--------------+
| 17 | 2 |
| 16 | 2 |
| 15 | 2 |
| 14 | 2 |
| 13 | 18 |
| 12 | 18 |
| 11 | 18 |
| 10 | 18 |
| 9 | 18 |
| 8 | 1 |
| 6 | 2 |
| 5 | 2 |
| 3 | 2 |
| 1 | 2 |
+--------+--------------+
14 rows in set (0.00 sec)
我需要一个能给出如下结果的查询:
+----------------+--------------+
| idform | user_id |
+----------------+--------------+
| 17,16,15,14 | 2 |
| 13,12,11,10,9 | 18 |
| 8 | 1 |
| 6,5,3,1 | 2 |
+----------------+--------------+
4 rows in set (0.00 sec)
我试着使用mysql的group\u concat()函数,但是我不能让结果看起来像这样。我只想做的是,mysql按顺序返回结果,但为新用户创建一个新组。创建一个新组添加带有逗号的id,然后在一个新的用户id上创建一个新组。
我知道我可以用php编程,但是如果我用php编程,我在分页上会有一些问题。
你知道怎么做吗?
现在谢谢你。
编辑:我也尝试过这样的查询:按用户id从故事组中选择组concat(idform)
+---------------------+--------------+
| idform | user_id |
+---------------------+--------------+
| 8 | 1 |
| 1,3,5,6,14,15,16,17 | 2 |
| 9,10,11,12,13 | 18 |
+---------------------+--------------+
3 rows in set (0.00 sec)
1条答案
按热度按时间i2byvkas1#
您需要比较连续的用户id,并在比较之后为每个组分配一个编号。稍后,您可以使用groupconcat来处理数据
group_number
.我认为下面的查询应该适合你。