根据另一个表中的字段更新列

时间:2010-05-17 23:26:14

标签: sql sqlite

我想根据其他表中的相应值更新一个表中的值。假设您要更新名称在表Manufacturers中的一个特定制造商提供的作品的价格,其中Pieces表格仅包含制造商的ID。

我已经看到了MySQL here和MS SQL Server here的几种解决方案,但它们似乎都不适用于SQLite。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

你尝试过这样的事吗?

UPDATE Pieces
SET price = 42
WHERE manufacturer_id = (
    SELECT id
    FROM Manufacturers
    WHERE Name = 'FooBar Inc.'
)

答案 1 :(得分:0)

对于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'));

效率不高,但您可以根据自己的需要进行调整。