Как преобразовать несколько запросов на обновление в один запрос? - PullRequest
0 голосов
/ 05 августа 2020

У меня есть база данных с 28 таблицами, и я хочу обновить несколько таблиц, чтобы задать один столбец с помощью uniqkey из первой таблицы. Я делаю это с несколькими запросами, но хотел бы знать, можно ли сделать это с помощью только одного запроса.

Вот пример того, что я делаю:

UPDATE teste.001 001
    INNER JOIN teste.000 000 
    SET 001.f_uniqkey= 000.uniqkey;
    
UPDATE teste.002 002
    INNER JOIN teste.000 000 
    SET 002.f_uniqkey= 000.uniqkey;
    
UPDATE teste.003 003
    INNER JOIN teste.000 000 
    SET 003.f_uniqkey= 000.uniqkey;
    
UPDATE teste.004 004
    INNER JOIN teste.000 000 
    SET 004.f_uniqkey= 000.uniqkey;
    
UPDATE teste.005 005
    INNER JOIN teste.000 000 
    SET 005.f_uniqkey= 000.uniqkey;

Эти запросы работают, но я хотел бы знать, можно ли сделать это с помощью только одного запроса, чтобы оптимизировать его.

Спасибо за помощь!

1 Ответ

0 голосов
/ 05 августа 2020

Конечно, вы можете попробовать что-то вроде

UPDATE teste.000 t000
JOIN teste.001 t001 
JOIN teste.002 t002 
JOIN teste.003 t003 
JOIN teste.004 t004 
JOIN teste.005 t005 
SET t001.f_uniqkey = t000.uniqkey,
    t002.f_uniqkey = t000.uniqkey,
    t003.f_uniqkey = t000.uniqkey,
    t004.f_uniqkey = t000.uniqkey,
    t005.f_uniqkey = t000.uniqkey;

, но в целом это неверно и выглядит как «плохая практика».

...