我有这个查询:
INSERT INTO products_xsell (products_id, xsell_id)
SELECT px.products_id px_products_id, px.xsell_id, cross_added.products_id
FROM products_xsell px,
(
SELECT pc1.products_id, pm1.parent_id
FROM products p1, products_cache pc1, products_modeles pm1
WHERE p1.products_id = pc1.products_id AND pm1.products_id = p1.products_id
) AS cross_added
WHERE cross_added.parent_id = px.products_id
ON DUPLICATE KEY UPDATE
px.products_id=px.products_id,
px.xsell_id=px.xsell_id
;
通过将表products_id
的字段products_xsell
与表parent_id
的字段cross_added
进行比较,我的选择获得了1条以上的记录。我希望能够遍历该选择的多个结果,并将它们一个接一个地插入。但是看我怎么做,我不能,因为我们只能在每个选择中插入1个值,而不能插入多个结果。
在特定情况下,如何插入返回多个结果的选择?
表products_xsell
的示例数据如下:
products_id xsell_id
1953 6235
1953 1245
1953 3265
1423 1024
1423 3623
...
我的子表cross_added
在第一个循环cross_added.parent_id = px.products_id = 1953
处给我回信:
products_id parent_id
1953 1953
2563 1953
6541 1953
此子表是第一行的结果:
products_id xsell_id
1953 6235
我想要做的是循环遍历子表cross_added
,对于每个product_id,我想将其插入到具有相同xsell_id的products_xsell
中,以用于第一行对于其他所有人都一样:
products_id xsell_id
1953 6235
2563 6235
6541 6235
任何想法我该怎么做? :-)