liekkas_zeng 2009-01-07 16:42
浏览 261
已采纳

问一个SQL转HQL语句问题

[size=xx-small][/size]数据库中:表 A 字段 aa,bb,cc
写如下语句:
select count(aa) as a
from A
where bb like 'a' and a=1
group by cc

报错:前面命名的新字段a在后面用不了 a=1

改成这样:
select * from
(
select count(aa) as a
from A
where bb like 'a'
group by cc
)t where t.a=1

这种情况就可以了!但写成HQL语句就不行了

问:这种情况该如何改写成相应的HQL语句? :)

  • 写回答

3条回答 默认 最新

  • etank2011 2009-01-07 16:53
    关注

    第一个SQL会报告说a不存在,因为a只是作为返回结果集中的别名,不能在条件语句中使用,而第二个可以的原因也是因为这个,子查询返回的结果集被包装(不知道这个词用在这对不对)一个虚拟表,表名是t,而表的列名就是结果集中a,所以外层查询可以使用a作为列名进行查询
    其实用
    [code="java"]
    select count(aa) as a
    from A
    where bb like 'a'
    group by cc having count(aa) = 1
    [/code]
    也可以直接查出来
    至于改成HQL,可以如下
    [code="java"]
    select count(A.aa) as a
    from A
    where A.bb like 'a'
    group by A.cc having count(A.aa) = 1
    [/code]
    (感觉没有什么变化。。。)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?