2015-09-06 2 views
0

Я выполняю событие MySQL каждую секунду, и в этом случае я хочу проверить, зарегистрированы ли какие-либо пользователи на определенное время. Если они есть, я хочу вставить строку в другую таблицу, называемую «достижения».Вставить в таблицу, где что-то в другой таблице истинно

Я хранил регистрационную дату пользователя как метку времени (целое число) в поле под названием «regtime» в таблице, называемой «пользователи», и я бы хотел, чтобы проверка выполнялась в секундах, поэтому я могу сделать что-то вроде :

if time now - regtime (total time registered) = certain amount of seconds, insert row into achievements 

ответ

0
INSERT INTO `achievements` 
    (`user_id`, `field1`, `field2`, `fieldX`) 
SELECT `id`, 'field1Value', 'field2Value', 'fieldXValue' 
FROM `users` 
WHERE (NOW() - `regtime`) > @certain_amount_of_seconds 
0

Вы можете использовать следующий запрос:

INSERT INTO achievements (message, logtime, category) 
SELECT msg, UNIX_TIMESTAMP(), 'info' 
FROM user 
WHERE (UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(join_date)) > 360000 

В приведенном выше запросе мы следующие ключевые моменты:

msg - Это поле из таблицы пользователя. Мы могли бы сказать, user.msg
UNIX_TIMESTAMP() - Текущая Отметка времени Unix
«Информация» - это константа, которая будет вставлена ​​с каждой записи

Смежные вопросы