我想对表中的所有行进行排序,循环中每个类别一个。例如,给定以下数据:
+---------+-------------+
| item_id | category_id |
+---------+-------------+
| 4013738 | 1102 |
| 4016142 | 1102 |
| 4027380 | 1102 |
| 4029166 | 1014 |
| 4031335 | 1125 |
| 4031984 | 1014 |
| 4031986 | 1014 |
| 5034654 | 1123 |
| 5034656 | 1125 |
| 5034662 | 1125 |
| 5034735 | 1109 |
| 5034736 | 1109 |
| 5034737 | 1109 |
| 5040226 | 1123 |
| 5040227 | 1123 |
+---------+-------------+
所需的结果集应该是这样的:
+---------+-------------+
| item_id | category_id |
+---------+-------------+
| 4029166 | 1014 |
| 4013738 | 1102 |
| 5034735 | 1109 |
| 5034654 | 1123 |
| 4031335 | 1125 |
| 4031984 | 1014 |
| 4016142 | 1102 |
| 5034736 | 1109 |
| 5040226 | 1123 |
| 5034656 | 1125 |
| 4031986 | 1014 |
| 4027380 | 1102 |
| 5034737 | 1109 |
| 5040227 | 1123 |
| 5034662 | 1125 |
+---------+-------------+
item_id
还应订购连续类别。如果某些类别包含的项目比其他类别多,则循环应继续使用相同的逻辑处理剩下的任何行。
在像 php 这样的脚本语言中,这将是一项相当微不足道的任务,但我无法终生思考如何在 sql 中完成它。
这是一个带有示例数据的数据库小提琴:https ://www.db-fiddle.com/f/ioZzvoQfnSNiowe6Rp7QP5/0