求一有难度的HQL

dddeee 2006-03-22 12:15:20
一个表 T
name lover
a l1
a l2
a l3
b l4
c l5
c l6

按lover个数的多少返回name ,上表应该返回 a c b

即:先统计各数,再排序返回。

对应的SQL为:

select f.name from
(select count(*) count,t.* from T t group by t.name) f order by f.count

但是HQL试了半天也没试出来,郁闷极点

...全文
135 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fibona 2006-03-23
  • 打赏
  • 举报
回复
up
dddeee 2006-03-22
  • 打赏
  • 举报
回复
原来是因为mysql居然不支持order by count(xx)这样的句型。hibernate生成的语句,它执行不了
图门的世界 2006-03-22
  • 打赏
  • 举报
回复
关注一下
不过楼主是不是可以考虑用多次查询来实现?
zeq258 2006-03-22
  • 打赏
  • 举报
回复
恭喜你解决了!
dddeee 2006-03-22
  • 打赏
  • 举报
回复
mysql 4.1不支持,但是5.0支持了 :)
今天换了5.0就好了
dddeee 2006-03-22
  • 打赏
  • 举报
回复
在having子句中允许出现SQL函数和统计函数,当然这需要底层数据库支持才行。(比如说,MySQL就不支持)

还是mysql的问题。但是数据库不能换,怎么办呢?
dddeee 2006-03-22
  • 打赏
  • 举报
回复
又经过测试,似乎不是。生成的语句在sqlserver下也执行不了。看来还是hql写得不对

正确的应该怎么写呢?

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧