2016-06-05 1 views
2

В настоящее время я пытаюсь узнать, как использовать процедуры с базой данных MySQL. У меня есть две таблицы в тестовой базе данных, одна называется пользователями и одна называется сообщения.Удалить строку в базе данных таблицы в соответствии с меткой времени из другой таблицы

Я попытался удалить строки в моей таблице сообщений, если удаление столбца равно 1, с помощью этого:

DELETE FROM `messages` WHERE `delete` = 1; 

Это работало довольно хорошо.

Затем в моей таблице пользователей есть столбец с меткой времени last_seen (например, 2016-05-08 13:00:26), а другой - user_id, каждый пользователь имеет свой собственный уникальный идентификатор (например, 123456789). В моих табличных сообщениях есть столбец с именем receiver_id. Я хотел бы сделать процедуру, которая удаляет каждую строку из сообщений таблицы, где совпадает идентификатор из user_id (в таблице пользователя) и receiver_id (в таблице сообщений), и если дата отметки времени (из пользователей таблицы и столбца last_seen) старше 30 дней.

Я пробовал пару разных вещей, но никто, похоже, не работал. Любая идея, как это сделать?

Это в значительной степени мой первый попыток использовать MySQL, и это, вероятно, не очень оптимизировано, оно предназначено для школ и обучения. Я пытаюсь создать очень базовую систему, которая хранит пользователей и их сообщения в базе данных.

Любая помощь была бы принята с благодарностью. Благодарю.

ответ

0

Может быть запрос, как это (вступление и DATE_SUB)

delete from `messages` 
inner join `user` on `messages`.user_id = `user`.id 
and `user`.last_seen < DATE_SUB(NOW(), INTERVAL 30 DAY) ; 
Смежные вопросы