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生成的任何结果(行)都将按原样插入。