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

时间:2013-12-21 02:06:07

标签: java mysql hibernate

我正在尝试这样做

  

查询query = session.createQuery(“*,sum(quantity)FROM Inventory ORDER BY price ASC,> entry_time ASC”);

不断收到错误,说它不会重新认识* ..

  

错误:第1行:1:意外令牌:*第1行:1:意外令牌:*

所以我尝试了另一种方式SELECT *,sum(quantity)来自库存ORDER BY价格ASC,entry_time ASC

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

  

org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:   *靠近第1行第8列[SELECT *,SUM(数量)FROM库存ORDER BY价格ASC,entry_time ASC]

那么我如何检索所有列,同时如果它们都不起作用的话总结它们? (该命令实际上在SQLWave中工作..但不能通过Java + Hib工作)

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

  

SELECT *,sum(quantity)FROM(SELECT * FROM Inventory ORDER BY price   ASC,entry_time ASC)按价格分组

1 个答案:

答案 0 :(得分:1)

不幸的是,当您使用聚合函数时,您必须指定要检索的所有列。 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)

将聚合(MAX等)与其他没有GROUP BY的列放在一起是没有意义的,因为查询变得模糊不清。