对于数据库中的每一行,我有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语句?
最佳答案
有人用Case..When..End
解决了它,效果很好。
select i from Item as i order by CASE WHEN a = null THEN id ELSE GREATEST(id, a) END DESC