如果datetime值更大,mysql使用来自其他表的join更新单元格值

hi3rlvi2  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(258)

我有两张table:
表:(每个代码都是唯一的,只出现一次)

id |      code     |       datetime      |  
1  | 2574857458745 | 2017-05-20 20:15:30 | - update this code datetime   
2  | 6554995949445 | 2017-07-13 11:17:40 |  
3  | 8214687655556 | 2017-04-27 21:26:55 |  
4  | 3354551848451 | 0000-00-00 00:00:00 |

b表:(代码多次出现的地方)

id  |      code     |       datetime      |  
26  | 2574857458745 | 2018-07-14 16:24:20 |  - occurs here 2 times  
47  | 6554995949445 | 2018-09-06 17:35:44 |  
64  | 8214687655556 | 2018-03-09 22:06:12 |  
57  | 2574857458745 | 2018-11-12 23:57:35 |  - update only with the latest datetime

因此表的第一行是:

id |      code     |       datetime      |  
1  | 2574857458745 | 2018-11-12 23:57:35 |

以此类推,搜索每个代码,如果存在于b表中,则用最新的datetime更新
有没有可能通过mysql更新join来实现这一点?如果是,那么如何?或者其他想法?

kdfy810k

kdfy810k1#

使用子查询和联接:

update tableA a
inner join
(select code, max(datetime) as d
from tableB 
group by code)b on a.code=b.code
set a.datetime = b.d
w1jd8yoj

w1jd8yoj2#

你可以用 updatejoin :

UPDATE tablea a
JOIN (SELECT code, MAX(datetime) as maxdt FROM tableb GROUP BY code) b
ON a.code = b.code
SET a.datetime = b.maxdt;

注意:如果tablea的datetime高于tableb的latest datetime,则仍将更新

相关问题