我有一张表如下
表项{
ID - 主键
内容 - 字符串
published_date - 内容发布时
create_date - 创建此数据库条目时
}
每小时(或指定的时间间隔)我运行一个流程来使用来自不同来源(网站)的数据更新此表。我想根据以下规则显示结果 1.每次运行过程时创建的条目应组合在一起。因此,即使第一次运行的条目的published_date位于第二次运行的条目的published_date之后,第二个进程运行的条目将始终位于第一个进程运行的条目之后。 2.在运行分组中,条目按published_date分类 3.另一个限制是我更喜欢来自同一来源的数据不能组合在一起。如果我按照create_date,published_date排序,我将得到来自源a的数据,来自源b的数据等。我更喜欢将每小时内的数据混合起来以便更好地呈现
如果我向此表添加一个列并存储一个计数器,该计数器在每次运行进程时递增,则可以创建一个查询,首先按计数器排序,然后按published_dt排序。有没有办法在不添加字段的情况下执行此操作?我正在使用Hibernate而不是MySQL。
e.g。
第1小时(第1步)
从站点a(行1-4)收集4行
从站点b(第5-7行)收集的3行
小时2(运行2)
从站点a(行8-9)收集的2行
从站点b(第10-12行)收集3行
......
每次运行后,新记录将从每个网站添加到数据库中。创建日期是在数据库中创建记录的时间。发布日期是内容的一部分,并从外部源读取。
当显示结果时,我希望根据发布的时间将行组合在一起。因此,行8-7将显示在第8-12行之前。在每小时分组中,我想按发布日期(时间戳)对结果进行排序。这是必要的,以便在该小时内收集的所有网站的帖子不会组合在一起,而是相互混合。
答案 0 :(得分:1)
如果你添加一个计数器,你绝对可以先通过计数器订购商品,然后再发布日期:
from Item item order by item.counter desc, item.publishedDate