mysql - 使用相同的表和行偏移进行更新

标签 mysql sql sql-update

有表

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

数据示例:

enter image description here

有下一个问题。如何编写更新查询来填充此用户下一行的 next_date where next_date=date (user_id)

最佳答案

这是一种通过加入同一个表来实现的方法

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 ;

<强> DEMO

关于mysql - 使用相同的表和行偏移进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288459/

相关文章:

PHP 表单 - 使用一个或多个复选框更新数据库行

mysql - Windows从命令行启动mySQL服务器

sql - 有关 SQL 查询的帮助

php - 酒店预订日历预订逻辑问题

sql - 数据库索引如何工作?

mysql - 或未在 mysql 中运行的内部 case 语句

mysql-使用多个where子句更新单行中的多个列

php - 实现在线订单跟踪数据库的最简单方法

javascript - 如何使用给定的日期/时间在javascript中获取日期/时间差

sql - 如何在 SQL Server 中使用 JOIN 执行 UPDATE 语句?