【发布时间】:2020-08-10 21:59:55
【问题描述】:
问了同样的问题,但是提供的所有答案都是针对 SQL Server 2008 的,并且这两种方法都不适用于 MySQL 或 H2:
replace NULL values with latest non-NULL value in resultset series (SQL Server 2008 R2)
类似问题(也是 SQL Server 2008,我们不知道所有表)
Replace null value by latest value
我需要的是可以与 MySQL 或 H2 一起使用的东西
如果我们有
product timestamp price
------- ---------------- -----
5678 2008-01-01 12.34
5678 2008-01-02 NULL
5678 2008-01-03 NULL
5678 2008-01-03 23.45
5678 2008-01-04 NULL
结果应该是
product timestamp price
------- ---------------- -----
5678 2008-01-01 12.34
5678 2008-01-02 12.34
5678 2008-01-03 12.34
5678 2008-01-03 23.45
5678 2008-01-04 23.45
MySQL 代码:
CREATE TABLE `table1` (
`product` int(11) NOT NULL,
`timestamp` date NOT NULL,
`price` decimal(10,0) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `table1` (`product`, `timestamp`, `price`) VALUES
(5678, '2008-01-01', '12'),
(5678, '2008-01-02', NULL),
(5678, '2008-01-03', NULL),
(5678, '2008-01-03', '23'),
(5678, '2008-01-04', NULL);
请保持简单。
【问题讨论】:
-
table1没有主键吗?
-
@ysth 我用 SQL 代码更新了一个问题来创建表
-
是的,我看到您的示例数据没有;你的真实用例真的没有主键吗?
-
请解释 pk 如何与最终解决方案相关,并使用 pk 提供答案
-
没有一个有点奇怪(事实上,mysql强迫你有一个,如果你没有,你会为你隐藏一个,所以你没有保存任何东西一)