【发布时间】:2020-04-03 04:14:33
【问题描述】:
当我从派生表(映射表)执行左连接时,我得到不同的结果
这是表格
表格1 日期值 2020-03-02 00:00:00 0 2020-03-02 07:00:00 1 2020-03-02 12:00:00 0 表_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 映射表 日期 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"我希望 Table_1 的左连接应该返回与 Table_2 相同的结果?我也不明白为什么计数器的值不同?是不是因为两张表的大小不一样?
使用的mysql版本5.7
任何帮助将不胜感激。
【问题讨论】:
标签: mysql sql database if-statement