Запросите одну строку с максимальным значением в одном столбце в Slick

Мне кажется, что это простая проблема, но я все же пытаюсь найти хорошее решение. Я использую Slick 3.0. Я хочу запросить строку таблицы, которая имеет наибольшее значение в одном столбце. Но я не хочу иметь только самое высокое значение (это просто), я хочу иметь всю строку. Я пробовал некоторые вещи, например сначала запросить максимальное значение, а затем отфильтровать его с этим максимальным значением, но ничего не компилировалось и не выглядело подходящим. Я бы ожидал, что там будет такой метод:

table.maxBy(_.columnName)

Но я не нашел такого метода. Итак, какой любимый способ сделать что-то подобное?


person F. Böller    schedule 04.07.2015    source источник


Ответы (1)


Способ сделать это - использовать этот запрос:

table.sortBy(_.columnName).take(1).result

К сожалению, он создает неоптимизированный (но правильный) SQL. Об ошибке сообщается и она исправлена, она будет выпущена в версии 3.1.0.

person sap1ens    schedule 04.07.2015
comment
Для maxBy это должно быть _.columnName.desc - person Tom; 07.12.2017