+ -
当前位置:首页 → 问答吧 → mysql 数据库操作问题

mysql 数据库操作问题

时间:2011-08-15

来源:互联网

有这样一个数据库表:
create table ab(
 id int not null auto_increment,
 aid int,
 num int
) primary key(id);
表记录为:
'1', '1', '10'
'2', '2', '12'
'3', '3', '1'
'4', '1', '12'
'5', '2', '13'
'6', '3', '14'
'7', '4', '20'
'8', '1', '1'
'9', '2', '2'
'10', '3', '18'
'11', '5', '12'
现在需要统计不同aid的最大值,并求和
要求用hql实现
我是这样写的:select sum(max(num)) from `test`.`ab` group by(aid);
但报非法group funcation错误

不知道大家有什么好办法?

作者: chen_2001   发布时间: 2011-08-15

select sum() from ( select max(num) as num from ab group by aid) t;

作者: ACMAIN_CHM   发布时间: 2011-08-15

关键是需要用HQL编写,而且HQL不支持嵌套,只支持where子句查询

作者: chen_2001   发布时间: 2011-08-15

select sum(num) from ab t where not exists (select 1 from ab where aid=t.aid and num>t.num);

作者: ACMAIN_CHM   发布时间: 2011-08-15

引用楼主 chen_2001 的回复:
现在需要统计不同aid的最大值,并求和
要求用hql实现
我是这样写的:select sum(max(num)) from `test`.`ab` group by(aid);
但报非法group funcation错误


没用过 hql,sql 语法里 group by 不用括号的,带括号了认为是一个函数。hql 是有括号的?

作者: nicenight   发布时间: 2011-08-15