java - (JPQL) - 查询获取记录数最多的用户

标签 java mysql jpa jpql

请原谅我再次回答这个问题,但我需要对此进行 JPA 查询:

select username, count(*)
from Records
group by username
order by count(*) desc
limit 1

我想到了这样的事情:

select r.username,count(*) from Records r order by r.username desc

然后调用

getResultList().get(0)

但我只能写:

select r from Records r order by r.username desc

在这种情况下,我不知道如何获得我需要的东西。 有人知道吗?

最佳答案

SQL 查询具有分组依据和按计数排序。 JPA 查询没有任何分组依据和按用户名排序。所以我不明白他们如何返回同样的东西。

等效的 JPQL 查询是

select r.username, count(r.id)
from Record r
group by r.username
order by count(r.id) desc

如果您对 Query 对象调用 setMaxResults(1),限制子句将添加到生成的 SQL 查询中,使其完全等效。

关于java - (JPQL) - 查询获取记录数最多的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14550430/

相关文章:

java - 警告 : Supported source version 'RELEASE_6' from annotation processor 'org.eclipse.persistence.internal.jpa.modelgen.CanonicalModelProcessor'

java - 使用 commons-email 配置模拟电子邮件

html - 如何使用PHP将mysql查询的数据输出显示为HTML?

php - MySQL选择问题: how to do a SELECT with any optional dropdowns?

java - 错误 : The given id must not be null for GeneratedValue in JPA

java - JPA native 查询连接返回对象但取消引用引发类强制转换异常

java - 在 WebView 上加载 URL 之前无法加载图像

删除 ArrayList 时出现 Java ConcurrentModificationException

java - Oracle 调用 Java 过程时出现 ORA-01722

mysql - MySQL order by 子句中的连字符