Mysql 插入到多个选择结果中

Mysql 插入到多个选择结果中,mysql,sql,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 produ

我有一个疑问:

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\xsell
的字段
products\u id
与表
cross\u added
的字段
parent\u id
进行比较来获取多条记录。我希望能够循环通过该选择的多个结果,并逐个插入它们。但看看我是怎么做的,我不能,因为我们只能在每个select结果中插入1个值,而不能插入多个结果

在我的特定情况下,如何使用返回多个结果的select进行插入

products\u xsell
包含如下示例数据:

products_id   xsell_id
  1953          6235
  1953          1245
  1953          3265
  1423          1024
  1423          3623
  ...
我的子表
cross\u added
在第一个循环中返回,其中
cross\u added.parent\u id=px.products\u id=1953

products_id   parent_id
  1953          1953
  2563          1953
  6541          1953
此子表是第一行的结果:

products_id   xsell_id
  1953          6235
我想做的是,在子表
cross_added
中循环,对于每个产品id,我想用相同的xsell id将其插入到
products_xsell
中,以便在第一行使用该id,在所有其他行中使用相同的id:

products_id   xsell_id
  1953          6235
  2563          6235
  6541          6235

你知道我该怎么做吗?:-)

您能提供一些示例数据和预期结果吗?@D-Shih我已经添加了一个示例,现在清楚了吗?我不明白为什么您不能插入多个来自您选择的结果。但是,您的查询可能有错误:您为
INSERT
指定了2列,而
SELECT
返回了3列。@Lucas SELECT返回多行,INSERT。。。select只需要为每个select生成一个结果。不,我没有任何语法错误。插入将从选择具有相同名称的列中获取。我的语法不好。我仍然不明白你为什么说“选择只需要每个选择有一个结果”。要插入。。。SELECT,SELECT生成的任何结果(行)都将按原样插入。您能提供一些示例数据并期望结果吗?@D-Shih我添加了一个示例,现在清楚了吗?我不明白为什么您不能插入来自SELECT的多个结果。但是,您的查询可能有错误:您为
INSERT
指定了2列,而
SELECT
返回了3列。@Lucas SELECT返回多行,INSERT。。。select只需要为每个select生成一个结果。不,我没有任何语法错误。插入将从选择具有相同名称的列中获取。我的语法不好。我仍然不明白你为什么说“选择只需要每个选择有一个结果”。要插入。。。SELECT,SELECT生成的任何结果(行)都将按原样插入。