具有最新更新状态的MySQL更新查询

时间:2019-04-21 07:00:03

标签: mysql sql

我需要SQL查询,它应该选择带有时间的最后更新状态,然后使用我将在查询中提供的新值更新最后一个列值。 例如,这里我要更新3 md(列名)

enter image description here

update table1 set sta=5 where sta=4 and tgn=9020 and md=84414469;
update table1 set sta=4 where sta=3 and tgn=2602 and md=68028162;
update table1 set sta=3 where sta=9 and tgn=319 and md=84215297;

有关更多详细信息: 第一个查询将选择最后一个STA编号,例如3,4,然后将使用新的STA编号进行更新。 我的目的是更新sta列的值,但只更新将在最后一次更新时找到的那个值。

1 个答案:

答案 0 :(得分:1)

使用每个组的最高sta查询来加入表:

UPDATE table1 AS t1
JOIN (SELECT tgn, md, MAX(sta) AS max_sta
      FROM table1
      WHERE md IN (84414469, 68028162, 84215297)
      GROUP BY tgn, md) AS t2
ON t1.tgn = t2.tgn AND t1.md = t2.md AND t1.sta = t2.max_sta
JOIN other_table AS t3 ON t3.tgn = t1.tgn AND t3.md = t1.md
SET t1.sta = t3.sta