当前位置: 首页 > 知识库问答 >
问题:

MAX(Long)和null之间的JPQL比较

冯星阑
2023-03-14
SELECT entity FROM A entity
WHERE entity.b = (SELECT MAX(a.b) FROM A a)
AND entity.c = :c

b有一个已定义的长值时,这种方法可以很好地工作。但是,当b为null时,我不会得到结果。似乎=运算符不能比较空值。

我尝试在子句中使用is null,但如果MAX结果为null,并且以下查询同时返回MAX Long值和null值,则只希望实体具有null值:

SELECT entity FROM A entity
WHERE (
           (entity.b = (SELECT MAX(a.b) FROM A a))
           (OR entity.b IS NULL)
      )
AND entity.c = :c

如何选择具有最大值b的实体,或者如果没有设置b,则获取b为空的实体?

共有1个答案

东方旺
2023-03-14

nulls firstlast可用于对结果排序,然后将结果限制为1。那么就不需要使用max(x)

由于在我的环境中不支持NULL总是先出现,而NULLS,所以我使用如下查询解决了这个问题:

SELECT entity FROM A entity
WHERE entity.b = (SELECT MAX(a.b) FROM A a)
AND entity.c = :c
ORDER BY entity.b ASC

和一些代码:

try {   
    ...
    List<A> as = q.getResultList();
    result = as.get(as.size() - 1);
catch (NoResultException e) {
    // doo something
}
 类似资料:
  • 问题内容: 在为应用程序构建架构时遇到一个问题。 何时使用和。我的意思是应该使用它的确切用例。我也曾在网上冲浪,但我能够得到确切的答案。 任何人都可以提出一些确切的用例。 问题答案: 这是针对Microsoft SQL Server的 : 是 Unicode- 每个字符2个字节,因此最大。10亿个字符;可以处理东亚语,阿拉伯语,希伯来语,西里尔字母等字符。 就是 非Unicode -每个字符1个字

  • 问题内容: 哪一个性能更好 或者 ? 问题答案: 两者执行相同,因为从不评估EXISTS中的SELECT子句。您可以使用以下方法进行测试: 那应该触发除以零的错误,但是不会。 我个人更喜欢使用NULL,因为很明显表中没有引用任何东西,因此其他人更容易看到。选择一个值,例如第二个示例中的INT数字1,如果不熟悉EXISTS子句,可能会导致对所发生情况的假设。

  • 我正在从Java过渡到C,对<code>long</code>数据类型有一些疑问。在Java中,要保存大于2的整数<sup>32<sup>,只需编写<code>长x 。然而,在C语言中,<code>long</code>似乎既是数据类型又是修饰符。 似乎有几种方法可以使用: 还有,好像还有这样的事情: 等等 所有这些不同的数据类型之间有什么区别,它们都有相同的目的吗?

  • 问题内容: 我想做一些域验证 在我的对象中,我有一个整数, 现在我的问题是我是否写 和 如果是整数,则哪一个适合域验证。 有人可以解释一下两者之间的区别吗? 谢谢。 问题答案: 和用于验证数字字段,其可以被(代表数字), ,, 等和它们各自的原始包装。 用于检查字段的长度约束。 按照文档的支持,,和而和支持原语及其包装。请参阅文档。

  • 问题内容: 嗨,我想知道上述比较之间的区别吗? 我在检查时得到空指针异常。但是,如果我将其更改为,则效果很好。 问题答案: 和之间的区别 没有语义上的差异。 和 等价。 也许您将其与以下事实混淆了: 和 可以有所作为(因为第二种选择可能会导致NPE(如果被叫人为空)。

  • 问题内容: 从随机的php.net帖子中: 如果您正在执行$ whatever = null; 那么您正在重写变量的数据。您可能会更快地释放/缩小内存,但可能会从真正需要它们的代码中窃取CPU周期,从而导致更长的总体执行时间。 显然,这是无可争辩的真理,所以也许有人会乐于解释。 我的意思是,什么神奇地不会执行任何汇编指令,而会执行?给出的答案和说出来的一样有用 $ whatever = null会