Когда я выполняю левое соединение из производной таблицы (таблицы сопоставления), используя переменную @prevValue, если условие для сохранения предыдущего значения, я получаю разные результаты
Вот таблицы
Table_1
Date Value
2020-03-02 00:00:00 0
2020-03-02 07:00:00 1
2020-03-02 12:00:00 0
Table_2
2020-03-02 00:00:00 0
2020-03-02 07:00:00 1
2020-03-02 12:00:00 1
2020-03-02 14:00:00 0
Mapping_table
Date
2020-03-02 00:00:00
2020-03-02 01:00:00
2020-03-02 02:00:00
2020-03-02 03:00:00
...
Вот мой запрос (я даже добавил счетчики, чтобы проверить, как mysql присоединяется к таблице)
SET @prevValue=0;
SELECT DATE_FORMAT(P.date,'%Y-%m-%d %H:%i:%s') AS `date`,
IF(D.date IS NULL ,@prevValue, @prevValue:=D.value) AS `dataValue`
FROM (SELECT `T`.`date` FROM `Mapping_table` AS `T`
WHERE (date >= '2020-03-02 00:00:00') AND (date <= '2020-03-02 23:59:00')) AS `P`
LEFT JOIN `Table_1` AS `D` ON D.date=P.date ORDER BY `P`.`date` ASC;
Результаты к следующему:
Date Val
---------------------------
"2020-03-02 00:00:00" "0"
"2020-03-02 00:01:00" \N
"2020-03-02 00:02:00" \N
"2020-03-02 00:03:00" \N
"2020-03-02 00:04:00" \N
"2020-03-02 00:05:00" \N
Запрос к Таблица_2 (я только что заменил запрос таблицей_2) дает следующее:
Date Val
---------------------------
"2020-03-02 00:00:00" "0"
"2020-03-02 00:01:00" "0"
"2020-03-02 00:02:00" "0"
"2020-03-02 00:03:00" "0"
"2020-03-02 00:04:00" "0"
"2020-03-02 00:05:00" "0"
Мой желаемый результат будет последним. Я ожидаю, что левое объединение из Table_1 должно вернуть то же самое, что и результат Table_2? Ребята, у вас есть идея, что я должен изменить в своем запросе или объяснить, почему это происходит?
Mysql использованная версия 5.7