В следующем запросе есть ошибка группового предложения.Я не знаю, как сделать это правильно
SELECT user_id, MAX(updated_date), DATEDIFF(NOW(),MAX(updated_date)) FROM `authentication` WHERE DATEDIFF(NOW(),MAX(updated_date)) > 20 GROUP by user_id
Предположительно, вы хотите предложение having:
having
SELECT user_id, MAX(updated_date), DATEDIFF(NOW(), MAX(updated_date)) as diff FROM `authentication` GROUP by user_id HAVING diff > 20
Для повышения производительности дополнительно измените один из ответов с помощью
WHERE updated_date > CURDATE() - INTERVAL 20 DAY
и индекс updated_date.
updated_date
Нет необходимости делать MAX() в предложении WHERE:
MAX()
WHERE
SELECT user_id, MAX(updated_date), DATEDIFF(NOW(),MAX(updated_date)) FROM `authentication` WHERE DATEDIFF(NOW(),updated_date) > 20 GROUP by user_id