Выберите пользователей, последнее сообщение которых старше 30 дней

У меня есть таблица mysql messages со столбцами user_id, message, created_at, type

Мне нужно выбрать ВСЕХ пользователей, которые последний раз публиковали сообщение type=1 более 30 дней назад.

Я пытался:

SELECT user_id FROM messages WHERE type=1 AND MAX(created_at) < DATE_SUB(NOW(), INTERVAL 30 day) Что дало мне ошибку:

invalid use of group function


person bockzior    schedule 29.07.2015    source источник


Ответы (1)


Ошибка возникает из-за использования MAX, который является функцией агрегирования в предложении where. Правильно использовать MAX, но для каждого пользователя. То есть сначала сгруппируйте по пользователю, а затем используйте условие MAX. Пытаться:

SELECT user_id 
FROM messages 
WHERE type=1 
group by user_id
having MAX(created_at) < DATE_SUB(NOW(), INTERVAL 30 day)
person RafaelCaballero    schedule 29.07.2015