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

我正在使用Hibernate和数据库作为MySQL。到目前为止,我的HQL就像

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

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

如何编写这样的HQL语句?

最佳答案

有人用Case..When..End解决了它,效果很好。

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

07-24 18:45
查看更多