Обновите столбец на основе поля от другой таблицы

Я хотел бы обновить значения в одной таблице на основе соответствующих значений от других таблиц. Скажите, что Вы хотите обновить цены на части, обеспеченные одним определенным производителем, имя которого находится в таблице Manufacturers с Pieces таблица, содержащая только идентификатор производителя.

Я видел несколько решений для MySQL здесь и для SQL Server MS здесь, но ни один из них, кажется, не работает в SQLite.

Какое-либо предложение?

6
задан Community 23 May 2017 в 12:26
поделиться

2 ответа

Вы пробовали что-то подобное?

UPDATE Pieces
SET price = 42
WHERE manufacturer_id = (
    SELECT id
    FROM Manufacturers
    WHERE Name = 'FooBar Inc.'
)
2
ответ дан 17 December 2019 в 20:29
поделиться

Для SQLite в операторах UPDATE нет функции JOIN. Единственный вариант, который у вас есть, - это создавать связанные подзапросы:

UPDATE pieces 
    SET price = (SELECT SUM(price)
                 FROM manufacturers
                 WHERE pieces.manufacture_id = manufacturers.id)
WHERE manufacture_id in (SELECT id
                         FROM manufacturers
                         WHERE name IN ('boo', 'foo'));

Это не очень эффективно, но вы можете настроить его под свои нужды.

0
ответ дан 17 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: