У меня есть таблица с идентификатором, отметкой времени и значением счетчика байтов. Значение ограничено 4 294 967 295.

    +-------+---------------------+------------+------------+
    | id    | created             | received   | sent       |
    +-------+---------------------+------------+------------+
    | 18756 | 2017-07-02 10:14:00 | 3851926349 |      39421 |
    | 18755 | 2017-07-02 02:14:00 | 3851926349 | 4215449136 |
    +-------+---------------------+------------+------------+

Значение сбрасывается на 0 при переполнении. Как я могу получить строку с этим событием переполнения?

0
John Pam 22 Июл 2017 в 12:22
Я думаю, вы имеете в виду, что получено и отправлено - это поля типа int. Можете ли вы перейти на bigint? Или вы пытаетесь поймать те, которые превышают максимальное значение int при вставке, обновлении или запросе?
 – 
P.Salmon
22 Июл 2017 в 12:40
Эти значения являются записями из источника данных. Эти исходные данные я не могу изменить на bigint. Стараюсь ловить строки, которые перевалили за максимум.
 – 
John Pam
22 Июл 2017 в 12:58
Это действительно строки из источника или это агрегаты, основанные на идентификаторе и созданные?
 – 
P.Salmon
22 Июл 2017 в 13:07
Полученные и отправленные данные считываются с устройства и сохраняются в этой базе данных. Идентификатор и созданный столбец создаются при вставке новой строки.
 – 
John Pam
22 Июл 2017 в 14:04
Затем, если на устройстве не происходит переполнения, вы должны обнаружить переполнение при чтении, прежде чем оно будет записано в базу данных.
 – 
P.Salmon
22 Июл 2017 в 14:21

1 ответ

Лучший ответ

Решил проблему с mysql-запросом

     SELECT `tNext`.*
     FROM `dsl_connection` AS `t1`
     JOIN `dsl_connection` AS `tNext` ON `tNext`.`id` = `t1`.`id` + 1
     WHERE `tNext`.`sent` < `t1`.`sent`
     ORDER BY `t1`.`id` DESC
     LIMIT 10
0
John Pam 23 Июл 2017 в 20:28