插入多个选择结果

时间:2019-07-24 07:20:27

标签: mysql sql

我有这个查询:

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

任何想法我该怎么做? :-)

0 个答案:

没有答案