2015-07-29 3 views
1

У меня есть таблица messages MySQL с колоннами user_id, message, created_at, typeВыберите пользователей, которые последнее сообщение старше 30 дней

Мне нужно выбрать всех пользователей, которые последний разместил сообщение типа = 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

ответ

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) 
Смежные вопросы