【问题标题】:MySQL Hibernate sort on 2 columnsMySQL Hibernate 对 2 列进行排序
【发布时间】:2011-01-26 04:06:37
【问题描述】:

我有一张如下表

表格项{
ID - 主键
内容 - 字符串
published_date - 内容的发布时间
create_date - 创建此数据库条目的时间
}

每小时(或指定的时间间隔)我运行一个进程来使用来自不同来源(网站)的数据更新此表。我想按照以下规则显示结果。
1. 每次进程运行时创建的条目应该组合在一起。因此,第二次运行的条目将始终在第一次运行的条目之后,即使第一次运行的条目的发布日期在第二次运行的条目的发布日期之后。
2. 在按运行分组内,条目按发布日期排序
3. 另一个限制是我不希望将来自同一来源的数据组合在一起。如果我按 create_date、published_date 进行排序,我最终会得到来自源 a 的数据、来自源 b 的数据等。我更喜欢将每小时内的数据混合起来以更好地展示

如果我在这个表中添加一个列并存储一个每次运行进程时递增的计数器,则可以创建一个查询以首先按计数器排序,然后按published_dt。有没有办法在不添加字段的情况下做到这一点?我在 MySQL 上使用 Hibernate。

例如
第 1 小时(第 1 场)
从站点 a 收集的 4 行(第 1-4 行)
从站点 b 收集的 3 行(第 5-7 行)

第 2 小时(运行 2)
从站点 a 收集的 2 行(第 8-9 行)
从站点 b 收集的 3 行(第 10-12 行)
...

每次运行后,都会将来自每个网站的新记录添加到数据库中。创建日期是在数据库中创建记录的时间。发布日期是内容的一部分,是从外部来源读入的。

显示结果时,我希望根据发布时间将行分组在一起。因此,第 1-7 行将在第 8-12 行之前显示。在每个小时分组中,我想按发布日期(时间戳)对结果进行排序。这是必要的,这样一小时内收集的所有网站的帖子就不会组合在一起,而是相互混合。

【问题讨论】:

  • 你不能只按create_date 和published_date 订购吗?
  • @Kevin 我忘了包括我的第三个限制,谢谢你指出。
  • 我不确定我是否理解您的所有更正。您能否给出一个简短的示例表以及您希望如何显示示例表中的数据?
  • @Kevin - 添加了一个示例。
  • 谢谢。每次运行后,数据库会发生什么?是在添加项目时还是在更新项目时? publish_date 和 create_date 何时更改?

标签: mysql hibernate orm date sorting


【解决方案1】:

如果添加专柜,绝对可以先按专柜订购商品,再按发布日期订购:

from Item item order by item.counter desc, item.publishedDate

【讨论】:

  • 当然可以,但我想看看有没有办法在不添加额外列的情况下做到这一点。
猜你喜欢
  • 2014-03-12
  • 1970-01-01
  • 2014-07-07
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 2012-02-12
  • 2013-09-08
相关资源
最近更新 更多