Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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_Sql Update - Fatal编程技术网

Mysql 更新+;设置+;其中-动态最小值

Mysql 更新+;设置+;其中-动态最小值,mysql,sql,sql-update,Mysql,Sql,Sql Update,这是以下方面的后续行动: 我确实可以通过SELECT命令查询第三列(过去3天中最低的一列)“Low_3_days”: ----------------------------------------- | Date | Unit_ | Lowest_in_last_| | | price | 3_days | |---------------------------------------- | 2015-01-01 | 15

这是以下方面的后续行动:

我确实可以通过SELECT命令查询第三列(过去3天中最低的一列)“Low_3_days”:

-----------------------------------------
| Date         | Unit_ | Lowest_in_last_|
|              | price |  3_days        | 
|----------------------------------------
| 2015-01-01   | 15    |      15        | 
| 2015-01-02   | 17    |      15        | 
| 2015-01-03   | 21    |      15        | 
| 2015-01-04   | 18    |      17        | 
| 2015-01-05   | 12    |      12        | 
| 2015-01-06   | 14    |      12        |
| 2015-01-07   | 16    |      12        | 
|----------------------------------------

select S.Date,Unit_price, 
    (select S.Date, Unit_price, 
        (SELECT min(s2.Unit_Price) 
         FROM table s2
         WHERE s2.DATE BETWEEN s.DATE - interval 3 day and
                              s.DATE - interval 1 day
        ) as min_price_3_days
FROM table S;
我的新挑战是-使用UPDATE-SET的最佳方式是什么?我可以在哪里将(“最近3天内最低的”)值添加到表中的新列(而不是通过SELECT向我显示临时结果)

通过遵循UPDATE-SET-WHERE语法,查询将是:

UPDATE table 
    SET min_price_3_days = 
         (select S.Date, Unit_price, 
       (SELECT min(s2.Unit_Price) 
        FROM table s2
        WHERE s2.DATE BETWEEN s.DATE - interval 3 day and
                              s.DATE - interval 1 day
       ) as min_price_3_days
但我很难构造正确的查询。
正确的方法是什么?我承认这是一个很难解决的问题

您的
更新应该如下所示:

update table set low_3_days=
    (SELECT min(Unit_Price) 
     FROM (select unit_price, date as date2 from table) as s2
     WHERE s2.date2 BETWEEN date - interval 3 day and date - interval 1 day     
); 
你可以登记


在Fiddle中,我对表和列使用了不同的名称。我不想使用SQL关键字作为名称

非常感谢您的快速回复!出于某种原因,我在Low_3_days列中得到了空响应。有什么我做错了吗?我确实注意到了很多关于这个话题的兴趣和观点,如果还有其他人有其他的建议并愿意伸出援助之手,请随时加入。我完全意识到这个问题很难解决。非常感谢。简直太棒了!这很好用。感谢您花费额外的时间和精力来解决这个问题。向你致敬,Rtruszk!还有一个通知。如果您想要得到所需的结果,您应该在s.DATE-interval 2天和s.DATE-interval 0天之间使用
确实,感谢您提供了正确的指针!!