SQL - 使用另一个表中的信息更新表

时间:2014-04-28 13:11:44

标签: mysql sql

我正在尝试在我的公司eshop上运行更新,但我正试图找出正确的SQL命令来执行以下操作:

我有三张桌子:

Products
------------
pId
pSearchParams


ProductCategories
------------------
pcProductId      // products.pId
pcCategoryId     // categories.catId


Categories
----------
catId
catName

我需要使用pSearchParams表格中products字段中的信息更新catName表格中的categories字段。

我能做到这一点的唯一方法是将products表链接到productcategories表,因为productcategories表是我在{{products表之间建立链接的唯一方法1}}表和categories表。

问题是在productcategories表中,pcProductId可能包含多行的相同信息,pcCategoryId也是如此(例如,产品可以是多个类别)

我需要运行UPDATE语句来更新pSearchParams表中包含相关类别名称的所有products字段,从而允许多个类别名称。

如果我需要提供更多信息,请告诉我。感谢。

1 个答案:

答案 0 :(得分:1)

UPDATE products AS p
JOIN productcategories AS pc ON (p.pId = pc.pcProductId)
JOIN categories AS c ON (pc.pcCategoryId = c.catId)
SET p.pSearchParams = c.catName

更新

UPDATE products AS p
SET p.pSearchParams = (
    SELECT GROUP_CONCAT(c.catName SEPARATOR ' ')
    FROM productcategories AS pc
    JOIN categories AS c ON (pc.pcCategoryId = c.catId)
    WHERE pc.pcProductId = p.pId
    GROUP BY pc.pcProductId
)