【问题标题】:PostgreSQL - Update column in table by reading from other tablePostgreSQL - 通过从其他表中读取来更新表中的列
【发布时间】:2019-10-20 03:29:30
【问题描述】:

我正在尝试使用 product_stock 表中的相同值来更新 product_identifier 表中的 SKU 列。 我不能直接这样做。首先,我必须从 product_variant 中获取 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 知识很少。试图通过将其赋值给 value 来解释它)

以上代码总结:

从 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。一种产品可能有许多变体

【问题讨论】:

    标签: sql postgresql select insert


    【解决方案1】:

    您可以在UPDATE 语句中使用FROM 子句。但是您需要弄清楚如何将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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      相关资源
      最近更新 更多