如何基于另一列MySQL的MAX DATE更新一列

时间:2019-02-02 18:04:44

标签: mysql

-我正在对表中的列进行更新。但是我希望tp仅基于该表中另一列的基于MAX日期的行执行UPDATE。如下所示,通常只要DATE列中的日期是MAX,就需要更新Category列。

现在这是一些手动工作,因为我必须像下面的代码中那样明确定义日期。 我希望代码只能在DATE为MAX时更新。

日期格式为YYYY-MM-DD

Product Number  Date        category
A               2018-01-01   x 
B               2019-01-01   y
C               2020-01-01   z   
D               2021-01-01       


UPDATE SALES_TOTAL LEFT JOIN Masterdata_MAPEBIAS on SALES_TOTAL.`Product Number` = Masterdata_MAPEBIAS.`Item` and Date = '2021/01/01'
SET
SALES_TOTAL.`Category` = Masterdata_MAPEBIAS.Category;

1 个答案:

答案 0 :(得分:1)

加入获取最大日期的子查询。我还利用别名使查询更易于阅读

UPDATE sales_total t
LEFT JOIN Masterdata_MAPEBIAS m  ON t.`Product Number` = m.item
JOIN (SELECT MAX(date) max_date FROM sales_total) max ON max.max_date = t.sales_date
SET t.category = m.category