我正在尝试获取在将来的日期之前不会应用的最新数据。
目前,我正在使用以下HQL:
int x = goods.getId()
String hql = "FROM PriceTags as atcl WHERE atcl.goods_id = '"+x+"' AND atcl.updatedDate <= CURTIME() ORDER BY updatedDate DESC";
return (PriceTags) entityManager.createQuery(hql).setMaxResults(1).getSingleResult();
这将返回所有具有小于或等于当前时间的updateDate的价格标签,并对其降序排列。之后,我只使用第一个条目即可返回。
是否有可能使HQL获得所有商品的所有最新价格标签?
例如,表PriceTags将包含:
Id goods_id price updatedDate
1 101 100 2019-07-30
2 101 150 2019-07-31
3 102 120 2019-07-28
4 102 90 2019-06-29
5 102 130 2020-01-01
可以说今天是2019-08-01
我想获得第2行和第3行,因为它们是直到当天的最新条目。第5行直到明年1月才相关,因此不会退还。
最佳答案
我仅打算描绘一种方式,而不是给出适当的查询。
我假设goodsId,priceTag和updatedDate是表PriceTag中的3列。
select distinct(p.goodsId), p.priceTag, p.updatedDate from PriceTag p order by p.updatedDate desc