MySQL相关项查询

时间:2017-08-31 06:22:22

标签: mysql database

我有这样的相关产品表:

product_id | related_product_id
         1 | 2
         1 | 3
         1 | 4 
         2 | 1
         3 | 1
         4 | 1

但我希望插入新的相关产品ID,以便它们全部匹配。 I.E.如果产品1有2,3,4我不会产品2,3,4也有相同的相关ID缺失。

不确定它是如何调用的,但这可能吗?非常感谢。

3 个答案:

答案 0 :(得分:0)

您可以尝试此查询(未经测试,先进行备份!):

insert into related_products (product_id,related_product_id) (select related_product_id, product_id from related products);

答案 1 :(得分:0)

我建议用户使用双向条件来获取相关产品。例如,如果您对单列product_id应用条件,则不会得到反之亦然的结果。但是,如果您在两个列上检查该条件,您将得到结果。

例如:

select related_product_id, product_id from products where related_product_id=1 OR product_id=1

这将在related_product_id或product_id中提供您的相关产品ID。

同样可以获得产品2,即

select related_product_id, product_id from products where related_product_id=2 OR product_id=2

这将在related_product_id或product_id中提供您的所有相关产品ID。

答案 2 :(得分:0)

您可以使用SELECT查询作为INSERT

中的数据来源
INSERT INTO related_products (product_id, related_product_id)
SELECT r1.product_id, r2.related_product_id
FROM related_products AS r1
CROSS JOIN related_products AS r2
WHERE r1.product_id != 1
AND r2.product_id = 1

此联接将获取产品1的所有相关产品,并将它们与所有其他产品ID相结合。