mysql - 如何限制列表中的项目,但仍然在 MYSQL 中显示完整的组?

标签 mysql sql limit

我有以下数据集:

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/

相关文章:

javascript - 数据表 : Show action button depending on query

sql - SQL UPDATE中的str_replace?

mysql - 从一组中选择多个离散记录,如 LIMIT

java - 将数据从一个表插入到另一个表时出错

Android Cursor 最大尺寸

mysql - Rails ActiveRecord 删除记录,一次删除一条关联记录

mysql - 我可以使用哪些数据库规范化工具?

mysql - 如果其中一个值存在则更新,否则插入

arrays - 由于超出VM限制,MapReduce处理失败

MYSQL内连接有限制吗?