Выборка последних по дате изменения уникальных записей PostgreSQL/RoR
Имеется необходимость в запросе, который будет возвращать от модели 2 поля post и role. Подстрока для поиска приходит с фронта, записи с вхождением этой подстроки отсеять по уникальности и вернуть последнее по дате изменения. Реально ли это всё осуществить в пределах одного запроса? Пример записей в гугл-таблицах
То есть при вхождении подстроки "начальник 1" вернуть должно 4 и 5 записи При вхождении "ачаль" вернуть 3, 4, 5, 6, 7, 13 записи
Пробовал покурить вложенные запросы SELECT но моих познаний пока не хватает для построения рабочих конструкций.
Ответы (1 шт):
Тут не нужен вложенный запрос, можно воспользоваться DISTINCT ON вместе с ORDER, чтобы получить уникальные записи
Model.select("DISTINCT ON(models.post) models.id, models.post, models.role")
.where('models.post ILIKE ?', "%#{search_term}%").order(updated_at: :desc)