Group by max value

220
29 апреля 2018, 22:02

Есть таблица юзеров. Так получилось что в ней есть юзеры с одинаковым email. Мне надо выбрать всех уникальных (по email) юзеров с максимальной датой регистрации (последнего зарегистрированного). Я пытался это сделать вот так, но не работает - выбирает первого:

select id, email, created_at as created_at 
from users
group by email
having max(created_at)

Тот же пример на sqlfiddle.

Answer 1

Можно попробовать сперва отсортировать данные, а потом группировать, например так:

select id, email, from_unixtime(created_at) as created_at
from ( SELECT * FROM users ORDER BY created_at DESC) users_ord
group by email

а having тут не подойдет, это уже фильтрация результата после группировки

READ ALSO
Как объединить данные типа String при селекте?

Как объединить данные типа String при селекте?

Всем привет! Есть некий запрос:

182
Помогите пожалуйста с задачей - C++ [требует правки]

Помогите пожалуйста с задачей - C++ [требует правки]

Элементы размещаются по возрастанию по спирали к центру по часовой стрелке начиная от верхнего левого угла матрицы, используя пузырьковый...

201
Вопрос про конструкторы классов

Вопрос про конструкторы классов

Вот у меня есть класс:

230
Определить класс объекта

Определить класс объекта

Есть ли стандартная ф-ция определения класса объекта?

238