2011-09-19 36 views
2

對於我的數據庫中的每一行,我有2列,說idA。有時A可以是null。我想按照其idA的最大值對所有記錄進行排序,但是如果Anull,它將被忽略,並且該列將按id排序。通過使用最大的2列HQL排序記錄

我正在使用Hibernate和數據庫作爲MySQL。到目前爲止,我的HQL就像

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

它正在除了與A=null記錄的罰款。對於這些值,它們出現在返回結果的末尾(它們應該使用它們的id作爲關鍵字排序)。

如何編寫這樣的HQL語句?

回答

3

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

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