【问题标题】:Nhibernate HQL Subselect queriesNhibernate HQL 子选择查询
【发布时间】:2011-02-12 08:57:35
【问题描述】:

我有以下 SQL 查询:

select c.id
from (select id from customers) c

这个查询没有实际价值——为了这篇文章的目的,我大大简化了它。

我的问题:是否可以在 from 子句中使用 HQL 进行子查询。如果没有,我是否可以先查询客户,有点像 sql 中的临时表,然后将结果用作下一个查询的源?

谢谢

【问题讨论】:

    标签: nhibernate hql


    【解决方案1】:

    是的,这是可能的。

    上面的查询可以用HQL写成:

    select Id
    from Customer
    where Id in (select Id from Customer)
    

    【讨论】:

    • 我试过了,还是不行。但是,当我更改子查询时,它可以正常工作
    • 对不起,你是对的。它确实支持子查询,但不是全部。我正在改变我的答案。
    • 是的,这似乎工作正常 - 还有其他解决方案吗?我不喜欢 IN 子句 - 如果客户表包含 1000 个条目会发生什么...您可能会遇到一些内存问题。
    • 您的实际查询可能不会发生这种情况(上面的查询没有多大意义)。想要发布更接近真实的东西吗?
    【解决方案2】:

    我自己也遇到过这个问题。花了我一段时间才意识到 hql 不支持 from 子句中的子查询。

    请参阅 hql 文档here 中的第 14.13 节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 2011-09-25
      相关资源
      最近更新 更多