首页 > 解决方案 > 具有 2 列子连接的 HQL 查询

问题描述

我有一张桌子price

| id | price | product_id | date | other_columns... |

我有以下查询来返回price每个的最新行product_id

select p1.*
from price p1
  right join (
               select
                 p2.product_id,
                 p2.id,
                 max(p2.date)
               from price p2
               GROUP BY p2.product_id
             ) p2 ON p2.id = p1.id;

当我运行Explain计划时,从一张大桌子上运行,这似乎是实现这一目标的最有效方法(如果我错了,请纠正我!)。

我需要将其转换为HQLSpring Data JPA. 到目前为止,我有子查询:

(SELECT p2.id, MAX(p2.date) FROM Price p2 GROUP BY p2.product)

这似乎是容易的部分。我现在如何加入这个项目,以便获得Price每个产品的最新信息?


我尝试过其他查询,例如

select
  p1.*
from price p1
where p1.date = (
  select max(p2.date)
  from price p2
  where p1.product_id = p2.product_id
)

这更容易转换,HQL但在性能方面似乎更差。

标签: sqlspring-data-jpahql

解决方案


推荐阅读