繁体   English   中英

使用WHERE子句的MySQL INSERT INTO

[英]MySQL INSERT INTO using the WHERE clause

我正在尝试从产品表中读取所有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表中的现有数据,而不是在尝试添加/插入新行。

我相信您正在这里寻找更新查询,因为您正在基于一个表与另一个表的关系来设置该表中的值。

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

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

这是一个SQL Fiddle示例。

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

我正在尝试从产品表中读取所有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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM