我有以下数据集:
update (id, update_time)
1 <a timestamp>
2 <a timestamp>
item_update (update_id, item_id)
1 327
1 328
1 496
2 345
2 477
我想做的是在页面中显示如下:
On March 6, 2012: 327 328 496 On July 7, 2012: 345 477
或多或少。问题是数据集预计会变得非常大。我不能在一个页面中包含所有内容。但是,如果我只是将它们限制为任意数量,那么这些组就会在中间被切断。如果我通过更新来限制它们,那么我可能在一个页面中得到的太少而在另一个页面中得到的太多。
如何限制结果集,以便在不超过一定数量的项目的情况下获得尽可能多的组(更新)?
最佳答案
我假设你不想拆分一个组,那么你可以简单地
select update_id, count(*) cnt from item_update group by update_id;
这将为您提供每个 update_id 的计数。然后这只是一个遍历 update_ids 的问题,直到你的累积达到(或超过)你的页面最大值,然后为所有这些 update_ids 触发另一个查询......
虽然可能存在边缘情况,其中一个更新组有 1 个项目,而下一个更新组有 1000 个...允许您的分页在组上中断可能是有意义的...
page1
group1
item1
item2
item3
group2
item1
item2
page2
group2
item3
item4
etc...
那么这只是使用带有排序的限制子句的问题......
关于mysql - 如何限制列表中的项目,但仍然在 MYSQL 中显示完整的组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638182/