gpt4 book ai didi

java - QueryDSL 按行计数分组

转载 作者:太空宇宙 更新时间:2023-11-04 10:55:19 25 4
gpt4 key购买 nike

我陷入了按查询结果获取分组总数的困境。

JPAQuery jpaQuery = new JPAQuery(entityManager);
jpaQuery.from(QMessageSend.messageSend)
.where(predicate)
.groupBy(QMessageSend.messageSend.messageId).count();

这是我当前的代码。
此代码返回每个组的计数。

SELECT count(*)
FROM MESSAGE_SEND ms
GROUP BY ms.MESSAGE_ID

但我想通过查询结果获取分组的总数。就像下面sql的结果

SELECT count(*)
FROM (
SELECT *
FROM MESSAGE_SEND ms
GROUP BY ms.MESSAGE_ID
) msc

我应该做什么?

MESSAGE_ID 不是主键。并且JPAQuery的distinct方法不支持选择特定列。 (没有参数)

最佳答案

我想你想要COUNT(DISTINCT):

SELECT COUNT(DISTINCT s.MESSAGE_ID)
FROM MESSAGE_SEND ms;

如果MESSAGE_ID是表中的主键,则COUNT(*)就足够了。

关于java - QueryDSL 按行计数分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47366426/

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