Сортировка записей HQL с использованием наибольшего из 2 столбцов - PullRequest
3 голосов
/ 20 сентября 2011

Для каждой строки в моей базе данных у меня есть 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?

1 Ответ

4 голосов
/ 20 сентября 2011

Кто-то решил это с Case..When..End, работает отлично.

select i from Item as i order by CASE WHEN a = null THEN id ELSE GREATEST(id, a) END DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...