MySQL INSERT INTO使用WHERE子句

时间:2015-07-07 14:40:25

标签: mysql opencart

我正在尝试从产品表中读取所有SKU编号,并将其作为标记添加到我的产品说明表中。

以下是我正在使用的查询:

INSERT INTO product_description (tag)
SELECT sku
FROM product p
WHERE p.product_id = pd.product_id; #I don't know where to define pd

这些都不起作用:

INSERT INTO product_description pd (tag)

INSERT INTO product_description (tag) pd

我很难弄清楚应该如何构造WHERE子句。我需要确保两个表中的产品ID匹配,我也不能给第一个表一个别名。

为了澄清我的问题,我实际上是在尝试更新product_description表中的现有数据,我不是要添加/插入新行。

3 个答案:

答案 0 :(得分:4)

我相信您在这里正在寻找更新查询,因为您要根据它与另一个表的关系在一个表中设置值。

为此,您可以使用相关列JOIN将表格放在一起,并相应地设置值:

UPDATE product_description pd
JOIN product p ON p.product_id = pd.product_id
SET pd.tag = p.sku;

以下是SQL Fiddle示例。

答案 1 :(得分:0)

INSERT INTO product_description (tag)
(SELECT sku
FROM product p
INNER JOIN product_description pd ON p.product_id = pd.product_id

答案 2 :(得分:0)

  

我试图从产品表中读取所有SKU编号并添加   那些作为标签进入我的产品描述表。

我读到这个想要这样的东西:

INSERT INTO product_description (tag)
    SELECT distinct sku
    FROM product p;

如果您不想要重复,请确保product_description(tag)上有唯一的索引/约束。

您不能提供表格的结构,但您可能需要产品ID以及标记:

INSERT INTO product_description (product_id, tag)
    SELECT product_id, sku
    FROM product p;