在MySQL中使用最新日期更新数据

时间:2019-03-15 14:58:03

标签: mysql

我有一张桌子tblpushproducts

identifier  createddate   creator 
1           15-7-2018     Utrecht (Utr)
1           1-12-2018     Utrecht (Utr)
1           14-2-2019     Utrecht (Utr)            
2           12-12-2018    Utrecht (Utr)
2           12-02-2019    Utrecht (Utr)

我想将列creator中的值从Utrecht (Utr)更新为Utrecht。 但是,您可以看到,同一标识符有多个行。 我只想更新具有最新日期的行。

因此,例如,在这种情况下,仅应更新以下行:

1           14-2-2019     Utrecht (Utr)
2           12-02-2019    Utrecht (Utr)

2 个答案:

答案 0 :(得分:0)

尝试一下:

UPDATE tblpushproducts P SET P.creator = NewValue WHERE P.identifier = IDValueHere AND createddate = (SELECT MAX(T1.createddate) FROM tblpushproducts T1 WHERE T1.identifier = IDValueHere);

答案 1 :(得分:0)

您可以使用窗口功能ROW_NUMBER()查找最新行:

with
x as (
  select
    id, 
    row_number() over(order by createddate desc) as rn from tblpushproducts
)
update tblpushproducts
set creator = 'Donald Duck'
where id = (select id from x where rn = 1)