QueryDSL Group By Row Count

时间:2017-11-18 13:05:28

标签: java sql jpa querydsl

我陷入了根据查询结果得到的总计数。

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的独特方法不支持选择特定列。 (没有参数)

1 个答案:

答案 0 :(得分:0)

我想你想要COUNT(DISTINCT)

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

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