PostgreSQL-通过读取其他表来更新表中的列

时间:2019-06-04 15:08:01

标签: sql postgresql select insert

我试图通过使用 product_stock 表中的相同值来更新 product_identifier 表中的 SKU 列。 我不能直接这样做。首先,我必须从 product_variant 获取变体ID ,然后使用variant_id从 product_stock 中找到 SKU 最后,使用变体的SKU更新product_identifier表中的SKU列

product_id = SELECT id FROM product

variant_id = SELECT id FROM product_variant WHERE product_id=product_id

sku = SELECT sku FROM product_stock WHERE variant_id=variant_id

UPDATE product_identifier SET sku='sku'

(对不起,我对SQL的了解很少。尝试通过辅助其值进行解释)

上面的代码摘要:

从PRODUCT表中获取产品ID

使用产品ID查找产品的变体ID

查找变体ID的SKU代码

然后使用产品ID更新product_identifier中的SKU值

- 表样本

产品 enter image description here

PRODUCT_VARIANT enter image description here

PRODUCT_STOCK enter image description here

- PS。一种产品可能有多种变体

1 个答案:

答案 0 :(得分:0)

您可以在FROM语句中使用UPDATE子句。但是您需要弄清楚如何将product_identifier与其他表进行匹配。在这一点上,您的问题尚不清楚:

UPDATE product_identifier pi
    SET sku = ps.sku
    FROM product p JOIN
         product_variant pv
         ON pv.product_id = p.id JOIN
         product_stock ps
         ON ps.variant_id = pv.id
    WHERE pi.? = ?.?;  -- your join condition goes here