#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. Я пробую что-то подобное, но без объединения. Спасибо!