当前位置: 首页 > 知识库问答 >
问题:

使用Hibernate HQL 5添加两个计数查询的结果

郜彦
2023-03-14

请告诉我如何在HQL中请求两个计数的总和,以便Hibernate能够解析和执行。Mysql接受以下内容,但我希望避免使用本机SQL:

select ( (select count(id) from c_cat_map) + (select count(id) from c_acc_map) ) as c;

但是Hibernate 5.3.9中的HQL解析器拒绝了这一点:

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected end of subtree 

基本上与如何在hibernate中为count(*)和+(addition)编写查询相同,但没有HQL答案。

我只是想避免去数据库的两次往返,想在一次旅行中得到总和。也许没有本机查询是不可能的?提前谢了。

共有1个答案

弓宏茂
2023-03-14

像许多SQL方言一样,HQL有一个强制的from子句,但它不提供虚表或dual开箱即用的表。但在您的情况下,您可以通过运行以下查询来解决这个限制:

select count(id) + (select count(id) from c_acc_map) as c
from c_cat_map
 类似资料:
  • 问题内容: 受此问题的启发,我在Stack Exchange DataExplorer上编写了两个查询,一个查询统计了SO上每月提出的问题总数,另一个查询了Month颁发的赏金。如何合并它们,以便在一个查询中获得输出?我想在一份报告中查看年,月,问题,赏金和金额。 问题记录在PostTypeId = 1的Posts表中,但赏金记录在VoteTypeId = 9的Votes表中。 问题答案: 我是在

  • 问题内容: 我目前有两个选择命令如下。我想做的是将结果添加到SQL查询中,而不是代码中的变量。 是否可以将两者都放在同一SQL中并输出两个结果的总和? 问题答案: 是的。有可能的 附带说明,必须对表名定界以避免语法错误。分隔符在您使用的RDBMS上有所不同。

  • 问题内容: 我正在用SSRS编写一份报告。该数据集填充有MS SQL Server的SQL查询。它使用Union All查询几个相似的表。问题是有一些信息丢失。不同的表适用于不同的工作站点,但是这些表中的任何列都没有站点名称。标识站点的唯一方法是通过表名。在“全部合并”的结果的合并列中,无法分辨出哪些行来自哪个站点。 有没有一种方法可以更改我的查询以在结果中添加一列,该列将具有与每一行相关联的工作

  • 问题内容: 我正在尝试改进一个(不是很多)简单的查询: 我需要从表A中检索每一行。 然后将表A与表B连接起来,这样我就可以获得所需的所有数据。 同时,我需要使用表C中的count()添加一个额外的列。 就像是: 可以,但是实际上,我只是在进行2个查询,因此我需要改进它,因此它只能执行一个查询(如果可能的话)。 有人知道我该怎么做到吗? 问题答案: 最简单的方法可能只是将相关子查询移到子查询中。 注

  • 问题内容: 查询1: 查询2: 我想将两个结果合并为两列,其中缺少一列=查询2-查询1以加快处理速度。我该怎么做?示例: 我有两个结果: // ----------------------------------------查询:1 1 2 3 4 // --------------------------------------查询:2 4 5 6 8 // ------------------

  • 问题内容: 我有一个库存表,我想创建一个报告,以显示订购商品的频率。 “库存”表: 基本上,我需要将这两个查询结合在一起。 查询打印库存余额: 打印销售统计信息的查询 我认为某种JOIN可以完成这项工作,但我不知道如何将查询粘合在一起。 所需的输出: 这仅是示例。也许我将需要添加更多条件,因为有更多列。是否存在将多个查询组合在一起的通用技术? 问题答案: