ОБНОВЛЕНИЕ с использованием той же таблицы и смещения строк

#mysql #sql #sql-update

#mysql #sql #sql-обновление

Вопрос:

Есть таблица

 CREATE TABLE IF NOT EXISTS `test`.`stat` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `user_id` INT(11) NULL DEFAULT NULL,
  `tarif_id` INT(11) NULL DEFAULT NULL,
  `in` INT(11) NULL DEFAULT NULL,
  `out` INT(11) NULL DEFAULT NULL,
  `time` INT(11) NOT NULL,
  `date` DATETIME NOT NULL,
  `next_date` DATETIME NULL DEFAULT NULL,
  PRIMARY KEY (`id`))
ENGINE = InnoDB
  

Пример данных:

введите описание изображения здесь

Есть следующая проблема. Как написать запрос на обновление для заполнения next_date , где next_date = date следующей строки этого пользователя ( user_id )

Комментарии:

1. итак, для первой строки user_id = 3 какое значение будет установлено для next_date ?

2. дата из строки с идентификатором = 528

Ответ №1:

Вот способ сделать это, присоединившись к той же таблице

 update stat t1 
join
(
  select 
  id,date,user_id
  from stat 
)t2
on t2.user_id = t1.user_id
AND t2.id > t1.id
set t1.next_date = t2.date ;
  

ДЕМОНСТРАЦИЯ

Комментарии:

1. Я пробую что-то подобное, но без объединения. Спасибо!