我有2张桌子:
一个表:(其中每个代码都是唯一的,只出现一次)
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
因此表A的第一行为:
id | code | datetime |
1 | 2574857458745 | 2018-11-12 23:57:35 |
依次类推,搜索每个代码,如果B表中存在,则以最新的日期时间进行更新
可以通过使用join的mysql update实现此目的吗?如果是,那怎么办?还是其他想法?
答案 0 :(得分:1)
使用子查询并加入:
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
答案 1 :(得分:1)
您可以将update
与join
一起使用:
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的日期时间高于tableB的最新日期时间,则无论如何都会更新