Обновить поле в таблице значениями из другого поля из другой таблицы - PullRequest
0 голосов
/ 23 сентября 2018

Мне нужно обновить последние 110 значений таблицы descricao_geral последними 110 значениями таблицы релевантности

Я делаю это:

UPDATE descricao_geral
SET id_relevo_fk = (SELECT id_relevo FROM relevo ORDER BY id_relevo DESC LIMIT 110) 
ORDER BY id_descricao DESC
LIMIT 110

Полученная ошибка:

Подзапрос возвращает более 1 строки

1 Ответ

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

Это действительно сложно.Вам необходимо объединить таблицы вместе, но у вас нет подходящего ключа.

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

update descricao_geral g join
       (select (@rng := @rng + 1) as rn, g2.id_descricao
        from (select g2.* from descricao_geral g2 order by g2.id_descricao desc) g2 cross join
             (select @rng := 0) params
        limit 110
       ) g2
       on g.id_descricao = g2.id_descricao join
       (select (@rnr := @rnr + 1) as rn, r.id_relevo
        from (select r.* from relevo r order by r.id_relevo desc) r cross join
             (select @rnr := 0) params
       ) r
       on g2.rn = r.rn
   set g.id_relevo_fk = r.id_relevo;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...