gpt4 book ai didi

java - 命名查询以选择具有 MAX(列名)的行,另一列为 DISTINCT

转载 作者:可可西里 更新时间:2023-11-01 06:43:47 24 4
gpt4 key购买 nike

我有一个类似于 this question 中描述的案例,我写了一个相同的有效查询,但是当我尝试将其编写为 jpql 命名查询时,出现错误。

我的查询:

@NamedQuery(
name = "findRankingsBetween",
query = "SELECT rt FROM Rankingtable rt " +
"INNER JOIN " +
"(SELECT teamId, MAX(lastupdate) as MaxDateTime " +
"FROM Rankingtable " +
"GROUP BY teamId) grouped " +
"ON rt.teamId = grouped.teamId " +
"AND rt.lastupdate = grouped.MaxDateTime " +
"WHERE rt.lastupdate BETWEEN :from AND :to"
)

错误:

Error in named query: findRankingsBetween: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: ( near line 1, column 79

如何在jpql中正确编写查询?

最佳答案

this answer 中所述,JPQL 中的子查询只能出现在 select 和 where 子句中。 Hibernate doc .

JPQL 中的等效查询是:

"SELECT rt FROM Rankingtable rt " +
"WHERE rt.lastupdate = (SELECT MAX(r2.lastupdate) " +
"FROM Rankingtable r2 " +
"WHERE r2.teamid = rt.teamid) " +
"AND rt.lastupdate BETWEEN :from AND :to"

关于java - 命名查询以选择具有 MAX(列名)的行,另一列为 DISTINCT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27794582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com