Как сделать выборку людей старше месяца

Есть система списание средств по подписке. Схема конечно тупая, но не я её делал. Есть история операций, в которой есть время покупки подписки. Мне нужно выбрать пользователей, которые купили подписку месяц назад, и создать новую операцию "Снятие за подписку". Вот так я выбираю пользователей:

"SELECT * FROM history WHERE type = 'payment' AND date <= (NOW() - INTERVAL 1 MONTH)

Но есть одна проблема как мне исключить пользователей у которых оплата за подписку уже была. То есть выбирать все строки у которых нет операций раньше месяца. Для сортировки есть только поле date и uid - id пользователя.


Ответы (2 шт):

Автор решения: DmitryD

Если я все правильно понял, то:

SELECT * FROM history WHERE type = 'payment' 
AND date <= (select max(date) from history where type = 'payment')
→ Ссылка
Автор решения: makcim512

Сам разрулил

SELECT * FROM `history` as h1 WHERE `type` = 'payment' 
AND (SELECT MAX(date) 
     FROM `history` as h2 
     WHERE `type` = 'payment' 
     AND h1.uid = h2.uid) <= (NOW() - INTERVAL 1 MONTH)
→ Ссылка