Объединить два оператора UPDATE в MySQL - PullRequest
0 голосов
/ 05 января 2019

Есть ли способ объединить следующие два оператора, чтобы я записывал таблицу UPDATE только один раз? Название таблицы - STAT_SEP.

UPDATE STAT_SEP LEFT JOIN calendar on STAT_SEP.`Period` = calendar.`Unique_Period`
SET
STAT_SEP.First_Date = calendar.First_Date;

UPDATE STAT_SEP
, (SELECT First_Date AS earliest_date FROM STAT_SEP ORDER BY First_Date ASC LIMIT 1) fancy_alias
SET `Index` = TIMESTAMPDIFF(MONTH, earliest_date, First_Date);

1 Ответ

0 голосов
/ 05 января 2019

Вы можете вычислить самую раннюю дату в подзапросе, а затем использовать ее для обновления:

UPDATE STAT_SEP s LEFT JOIN
       Calendar c
       ON s.`Period` = c.`Unique_Period` CROSS JOIN
       (SELECT MIN(c2.First_Date) as earliest_date
        FROM STAT_SEP s2 JOIN
             Calendar c2
             ON s2.Period = c.unique_period
       ) c2
    SET s.First_Date = c.First_Date,
        s.Index = TIMESTAMPDIFF(MONTH, c2.earliest_date, c.First_Date);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...