События MySQL: вставка в другую строку таблицы с полем в заданном диапазоне - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть таблица MySQL table1 , структурированная так:

idTable1, datetime, field1, field2

и я хочу установить событие, которое будет запускаться каждые 5 минут и копировать в table2 последние строки, имеющие различные пары ( field1, field2 ) и дату и время, которые являются самыми последними.

Например, если сейчас это было 30.04.2008, 10:36:50 и в таблице1 были эти строки

    idTable1|  field1        | dateandtime        | field2        |         
    --------------------------------------------------------------
    |1      | value1field1   |2018-04-30 10:30:07 | value1field2  |
    --------------------------------------------------------------
    |2      | value2field1   |2018-04-30 10:32:41 | value1field2  |
    --------------------------------------------------------------
    |3      | value1field1   |2018-09-03 10:33:17 | value1field2  |
    --------------------------------------------------------------
    |4      | value3field1   |2018-09-03 10:35:27 | value1field2  |
    --------------------------------------------------------------
    |5      | value1field1   |2018-09-03 10:36:17 | value1field2  |
    --------------------------------------------------------------

Я хочу, чтобы событие скопировало в таблицу2 эти данные:

    idTable2  |idTable1|  field1        | dateandtime        | field2        |         
    --------------------------------------------------------------------------
    |1        |2       | value2field1   |2018-04-30 10:32:41 | value1field2  |
    --------------------------------------------------------------------------
    |2        |3       | value1field1   |2018-09-03 10:33:17 | value1field2  |
    --------------------------------------------------------------------------
    |3        |5       | value1field1   |2018-09-03 10:36:17 | value1field2  |
    --------------------------------------------------------------------------

Я попробовал следующий код, но он, похоже, не вставил ни одной записи:

BEGIN

    INSERT INTO table2 (idTable1, field1, dateandtime, field2) 
    SELECT idTable1, field1, dateandtime, field2            
    FROM table1
    WHERE dateandtime > date_sub(now(), interval 5 MINUTE)
    GROUP BY field1, field2
    ORDER BY dateandtime DESC;


END

Где я не прав?

...