sql - 具有 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
计划时,从一张大桌子上运行,这似乎是实现这一目标的最有效方法(如果我错了,请纠正我!)。
我需要将其转换为HQL
与Spring 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
但在性能方面似乎更差。
解决方案
推荐阅读
- python - 如果某人具有特定的权限/角色,则使他们免于亵渎过滤器 discord.py
- python - 在熊猫中填充nan时添加偏移量
- azure - 使用数据工厂附加到 azure 数据湖中的文件
- graphql - Strapi Graphql 查询日期和关系
- dynamic - 要嵌入的动态帮助cmd
- c - 从字符串初始化 uInt128 值
- bash - 如何按字符串集中两个不同分隔符之间包含的数值进行bash排序
- python - 错误 take() 不接受布尔索引器
- r - 如何使用 gsub 保留部分字符并删除 R 中的其他任何内容?
- ios - React-Native/XCode/iOS 模拟器 - os/kern 没有可用空间错误