en-6ren">
gpt4 book ai didi

java - 如何在hql中获取所有列和1列的总和数据?

转载 作者:行者123 更新时间:2023-11-29 00:22:03 28 4
gpt4 key购买 nike

我正在尝试这样做

Query query = session.createQuery("*, sum(quantity) FROM Inventory ORDER BY price ASC, > entry_time ASC");

不断收到错误消息说它无法识别 *..

ERROR: line 1:1: unexpected token: * line 1:1: unexpected token: *

所以我尝试了另一种方式 SELECT *, sum(quantity) from Inventory ORDER BY price ASC, entry_time ASC

得到与上面相同的错误,加上:

org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [SELECT *,SUM(quantity) FROM Inventory ORDER BY price ASC, entry_time ASC]

那么如果两者都不起作用,我该如何检索所有列,同时对它们求和呢? (该命令实际上在 SQLWave 中有效。但不能通过 Java+Hib 工作)

这是我正在尝试运行的查询(使用 SQL wave 工作)

SELECT *, sum(quantity) FROM (SELECT * FROM Inventory ORDER BY price ASC, entry_time ASC) AS r group by price

最佳答案

不幸的是,当您使用聚合函数时,您必须指定要检索的所有列。 SELECT *, SUM(quantity) 将不起作用。

SELECT 子句中没有聚合的所有列都需要在 GROUP BY 中

好:

SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3

也不错:

SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, col5, col6

没有其他列 = 不需要 GROUP BY

SELECT MAX(col4)
...

不会工作:

SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2

毫无意义:

SELECT col1, col2, col3, MAX(col4)
...
GROUP BY col1, col2, col3, MAX(col4)

在没有 GROUP BY 的情况下对其他列进行聚合(MAX 等)是没有意义的,因为查询变得不明确。

关于java - 如何在hql中获取所有列和1列的总和数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20714668/

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