Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql插值_Mysql_Sql - Fatal编程技术网

Mysql插值

Mysql插值,mysql,sql,Mysql,Sql,我在mysql中有以下数据: date,value,id 2016-01-01,0,1 2016-01-04,1,2 2016-01-10,2,3 2016-01-25,1,4 2016-01-26,10,5 我有另一个表,其中只包含日期和id,我想使用以下规则将其插入第一个表中:将该值设置为给定id日期之前最后一个日期的值。也就是说,如果我必须引入以下元素: date,id 2016-01-02,6 2016-01-03,7 2016-01-11,8 2016-01-28,9 2016-

我在mysql中有以下数据:

date,value,id

2016-01-01,0,1
2016-01-04,1,2
2016-01-10,2,3
2016-01-25,1,4
2016-01-26,10,5
我有另一个表,其中只包含日期和id,我想使用以下规则将其插入第一个表中:将该值设置为给定id日期之前最后一个日期的值。也就是说,如果我必须引入以下元素:

date,id

2016-01-02,6
2016-01-03,7
2016-01-11,8
2016-01-28,9
2016-01-28,10
我希望最后的表格是:

date,value,id

2016-01-01,0,1
2016-01-04,1,2
2016-01-10,2,3
2016-01-25,1,4
2016-01-26,10,5
2016-01-02,0,6
2016-01-03,0,7
2016-01-11,28
2016-01-28,10,9
2016-01-28,10,10

您能帮我吗?

您可以使用相关子查询获取上一个值:

select x.date, x.id,
       (select t.value
        from t
        where t.date <= x.date
        order by t.date desc
        limit 1
       ) as value
from (select '2016-01-02' as date, 6 as id union all
      select '2016-01-03' as date, 7 as id union all
      select '2016-01-11' as date, 8 as id union all
      select '2016-01-28' as date, 9 as id union all
      select '2016-01-28' as date, 10 as id 
     ) x;

如果要将这些插入表中,只需在select之前插入一个insert子句。如果您想要一个包含所有行的结果集,那么将union all与其他表一起使用。

您使用的是哪个版本的MySQL?是否要插入值或创建结果集?5.7.19,创建结果集即可