Когда я выполняю левое соединение из производной таблицы (таблицы сопоставления), я получаю разные результаты
Вот таблицы
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;
SET @testCtr:=0;
SELECT DATE_FORMAT(P.date,'%Y-%m-%d %H:%i:%s') AS `date`,
@prevValue,
D.value AS 'valueOriginal',
@testCtr AS 't1',
IF(D.date IS NULL ,@prevValue, @prevValue:=D.value) AS `dataValue` ,
@prevValue,
D.value AS 'valueOriginal',
(@testCtr:=@testCtr+1) AS 't2'
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;
Результаты к следующему:
"2020-03-02 00:00:00" "0" "0" "0" "0" "0" "0" "1"
"2020-03-02 00:01:00" \N \N "3" \N \N \N "4"
"2020-03-02 00:02:00" \N \N "4" \N \N \N "5"
"2020-03-02 00:03:00" \N \N "5" \N \N \N "6"
"2020-03-02 00:04:00" \N \N "6" \N \N \N "7"
Запрос к Table_2 (я только что заменил запрос на Table_2) приводит к следующее:
"2020-03-02 00:00:00" "0" "0" "0" "0" "0" "0" "1"
"2020-03-02 00:01:00" "0" \N "1" "0" "0" \N "2"
"2020-03-02 00:02:00" "0" \N "2" "0" "0" \N "3"
"2020-03-02 00:03:00" "0" \N "3" "0" "0" \N "4"
"2020-03-02 00:04:00" "0" \N "4" "0" "0" \N "5"
Я ожидаю, что левое соединение из Таблицы_1 должно вернуть то же самое, что и результат Таблицы_2? Я также не понимаю, почему счетчики не имеют одинаковое значение? Это потому, что две таблицы имеют разный размер?
Mysql Используемая версия 5.7
Любая помощь приветствуется.