【问题标题】:MySQL - Selecting first 100 records from each monthMySQL - 从每个月中选择前 100 条记录
【发布时间】:2015-05-18 18:19:55
【问题描述】:

我正在编写一个应用程序,其中我需要显示每个月前 100 条记录(基本上是销售订单)的数据。表结构如下:-

order_id (primary-key) | order_name | order_amount | order_time

问题在于,该表最多可以包含 10 年(120 个月)的数据,不一定以任何方式排序,每个月都有 0 到 5000 个订单。我应该如何编写一个限制返回每个月的前 100 个订单的查询(以有效的方式)?

【问题讨论】:

  • 如果递归 CTE 是可能的,那么您可以将其与 LIMIT 子句一起使用,将查询限制为每月 100 个。
  • 如果您搜索“每组选择前 N 行”,您可以找到很多示例。如果您可以创建一个包含最少样本数据(例如每月 2 个月和 3 行)的 sqlfiddle,并每月获取前 2 行,那么人们可以更好地帮助您。

标签: mysql sql


【解决方案1】:

这在 MySQL 中是可以做到的,但并不像添加 LIMIT 子句那么简单。 Here是一篇文章,详细解释了这个问题。

【讨论】:

  • 詹姆斯,感谢您的指点。但就我而言,采购订单不一定要编号(1 到 n),因为它们不是以这种方式输入的。实际上,只有在完成时才输入订单,但它们上的时间戳是订单开始时的时间戳。所以我猜对行编号没有多大帮助。
猜你喜欢
  • 1970-01-01
  • 2020-02-04
  • 2019-06-19
  • 2018-11-19
  • 1970-01-01
  • 2015-03-23
  • 2020-11-02
  • 2021-01-23
  • 2011-09-27
相关资源
最近更新 更多