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 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题