【问题标题】:HQL sorting records by using greatest of 2 columnsHQL 使用 2 列中的最大值对记录进行排序
【发布时间】:2011-09-19 20:59:30
【问题描述】:

对于我数据库中的每一行,我有 2 列,例如 id 和 A。有时A 可以是null。我想按其id 和A 值中的最大值对所有记录进行排序,但如果A 是null,它将被忽略,而该列将按id 排序。

我使用 Hibernate 和数据库作为 MySQL。到目前为止,我的 HQL 是这样的

select i from Item as i order by GREATEST(id, a)

除了A=null 的记录外,它工作正常。对于这些值,它们出现在返回结果的末尾(它们应该使用它们的id 作为键进行排序)。

这样的HQL语句怎么写?

【问题讨论】:

    标签: java hibernate hql


    【解决方案1】:

    有人用Case..When..End 解决了这个问题,效果很好。

    select i from Item as i order by CASE WHEN a = null THEN id ELSE GREATEST(id, a) END DESC
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      相关资源
      最近更新 更多