[英]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.