SQLite как использовать Join в Update
Есть две таблицы
tab_1
| id | name | desc |
tab_2
| id | tab_id | desc |
Как из tab_2 забрать данные из столбца desc и вставить в tab_1 столбец desc?
Я пробовал разные запросы, но выходят ошибки, гуглил, не помогло :):
UPDATE tab_1, tab_2
SET tab_1.desc = tab_2.desc
WHERE tab_1.id = tab_2.tab_id
.
UPDATE tab_1
SET tab_1.desc = tab_2.desc
JOIN tab_2 ON tab_1.id = tab_2.tab_id
.
UPDATE tab_1
SET tab_1.desc = (SELECT desc
FROM tab_2)
WHERE tab_1.id = tab_2.tab_id
Подскажите, использую sqlite3 :)
Ответы (1 шт):
SQLite не поддерживает оператор Join в Update - документация
Можно воспользоваться коррелированным подзапросом для обновления данных. Запрос для обновления будет выглядеть так:
UPDATE
tab_1
SET desc = (SELECT desc
FROM tab_2
WHERE id = tab_1.id)
where EXISTS (SELECT desc
FROM tab_2
WHERE id = tab_1.id)
Обязаталельно необходимо проверять с помощью EXISTS существует ли обновляемая запись во второй таблице, иначе вы получите Null значения для отсутствующих записей.
Пример работы, а так же, к чему приведет отсутствие EXISTS, можно увидеть тут фиддл
Для ответа была использована информация из вопроса на SO