数据库查询选择所有列,包括按“分组依据”的每条记录的计数

Posted

技术标签:

【中文标题】数据库查询选择所有列,包括按“分组依据”的每条记录的计数【英文标题】:Database query select all columns including count with every record by 'group by' 【发布时间】:2018-03-22 12:34:10 【问题描述】:

使用 Criteria 或 HQL(Hibernate Query Language),选择所有列Grouping by 选定列的任意一列,并为我们使用 group by 的每条记录选择 count

示例 SQL 查询例如:select *,count(1) from users group by name

【问题讨论】:

【参考方案1】:

您是否尝试过运行您的 SQL?你不能运行这个查询吧?

select *,count(1) from users group by name

你会收到一些错误,例如:

Column 'some_column_name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

你可以这样查询:

select name, count(name) from users group by name

在这种情况下,您可以在标准中使用投影来计算分组依据,例如:

criteria.setProjection(Projections.projectionList()
    .add(Projections.groupProperty("name"))
    .add(Projections.count("name")));

【讨论】:

以上是关于数据库查询选择所有列,包括按“分组依据”的每条记录的计数的主要内容,如果未能解决你的问题,请参考以下文章

比使用 LINQ 更快地查询数据库的每条记录

SQL“分组依据”问题 - 我无法选择每一列

JOINS 的大型查询中的 SQL 子查询链

如何为mysql中的每条记录检索表中的两条记录

如何获取自引用表的每条记录的所有子项

C#,遍历数据集并显示数据集列中的每条记录