我对MySQL14.14发行版5.5.35上的mysql查询有一个问题:
我有一张桌子叫
空白表
有3列
date
,
value
和
id_patient
.
CREATE TABLE `mytable`
( `date` DATE NOT NULL
, `id_patient` INT(11) NOT NULL
, `value` INT(3) NULL DEFAULT NULL
);
INSERT INTO `mytable` (`date`, `id_patient`, `value`) VALUES
('2019-11-17', '87321', '6'),
('2019-11-18', '87321', '1'),
('2019-11-19', '87321', '2'),
('2019-11-20', '87321', NULL),
('2019-11-21', '87321', '5'),
('2019-11-22', '87321', '8'),
('2019-11-23', '87321', NULL),
('2019-11-24', '87321', '3'),
('2019-11-25', '87321', '4'),
('2019-11-26', '87321', '6'),
('2019-11-27', '87321', '1'),
('2019-11-28', '87321', '10');
对于每一行,我需要知道前4个值的和不为空。
SELECT @date:=date, value,
( SELECT SUM(value)
FROM mytable
WHERE date<@date
AND id_patient=87321
AND value IS NOT NULL
ORDER BY date DESC LIMIT 0,4 ) somme
FROM mytable
WHERE id_patient=87321
它不起作用。不管有没有结果都一样
ORDER BY date DESC LIMIT 0,4
以及选中当前行之前的每一行。
有人知道为什么吗?
有一个预期结果的例子:
+-------------+--------------------+--------+
| @date:=date | value | somme |
+-------------+--------------------+--------+
| 2019-11-17 | 6 | NULL | SUM OF 0 previous values not null
| 2019-11-18 | 1 | 6 | SUM OF 1 previous values not null
| 2019-11-19 | 2 | 7 | SUM OF 2 previous values not null
| 2019-11-20 | NULL | 9 | SUM OF 3 previous values not null
| 2019-11-21 | 5 | 9 | SUM OF 4 previous values not null
| 2019-11-22 | 8 | 14 | SUM OF 4 previous values not null
| 2019-11-23 | NULL | 16 | SUM OF 4 previous values not null
| 2019-11-24 | 3 | 16 | SUM OF 4 previous values not null
| 2019-11-25 | 4 | 18 | SUM OF 4 previous values not null
| 2019-11-26 | 6 | 20 | SUM OF 4 previous values not null
| 2019-11-27 | 1 | 21 | SUM OF 4 previous values not null
| 2019-11-28 | 10 | 14 | SUM OF 4 previous values not null
+-------------+--------------------+--------+
谢谢你的帮助:)