我有一个 MySQL 数据库临时表,其中包含一堆针对系统 ID 和日期(它们组合构成主键)的仪表读数。
某些条目的仪表读数为 NULL,在这种情况下,它们需要更新以具有与前一天相同的仪表读数。
还有一个“差异”列,需要有当天读数和前一天读数之间的差异。
我知道如何使用代码更新表,我想知道是否有使用 SQL 的好方法。多个查询很好(我猜在计算差异之前至少需要更新 NULL 读数)。
这是一个带有假数据的示例架构,也在这个 sqlfiddle 中:
CREATE TABLE Readings (`SystemID` INT, `ReadingDate` DATE, `Reading` INT NULL, `Diff` INT NULL, PRIMARY KEY(`SystemID`,`ReadingDate`));
INSERT INTO Readings VALUES
(1, '2021-02-01', 24, NULL),
(1, '2021-02-02', 26, NULL),
(1, '2021-02-03', 23, NULL),
(1, '2021-02-04', NULL, NULL),
(1, '2021-02-05', NULL, NULL),
(1, '2021-02-06', 28, NULL),
(1, '2021-02-07', 21, NULL),
(2, '2021-02-01', 124, NULL),
(2, '2021-02-02', 126, NULL),
(2, '2021-02-03', 123, NULL),
(2, '2021-02-04', NULL, …Run Code Online (Sandbox Code Playgroud)