mysql обновляет значение ячейки с помощью объединения из другой таблицы, если значение datetime больше - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть 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

Итак, таблица Первая строка должна быть:

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

и т. Д., Ищите каждый код, и, если он существует в таблице B, обновите его до последней даты и времени

Этого можно добиться с помощью обновления mysql с помощью join? Если да, то как? Или другие идеи?

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

вы можете использовать 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;

Примечание. Если дата-время таблицы A больше, чем последняя дата-время таблицы В, это все равно будет обновлено

0 голосов
/ 11 сентября 2018

Используйте подзапрос и присоединитесь:

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
...