首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询-根据分配的值多次复制数据

SQL查询-根据分配的值多次复制数据
EN

Stack Overflow用户
提问于 2018-01-29 16:30:50
回答 2查看 51关注 0票数 1

我正在尝试从"product“表复制/复制数据,并在"carrier”列中添加新的值。

例如:在"product“表中,我有一个需要分配给另一个表"carrier”的产品列表。目前在“运营商”表中有5个运营商。

在"product_carrier“表中,我想在这里创建新的条目。产品"sample- 1“分配给载体1、2、3和4。产品"sample-2”分配给载体5。

因此,它就变成了这样:

示例-1|1

示例-1|2

示例-1|3

示例-1|4

示例-2|5

这是我目前用来分配运营商的电子商务系统的数据库结构。

我的桌子是-

ps_product: id_product

ps_carrier: id_carrier

ps_product_carrier: id_product,id_carrier_reference

我的直觉是,我需要更新2组数据组。首先,将产品设置为载体(1,2,3,4),并将另一组产品分配给载体(5)。我将运行2组查询来实现这一点。

我不知道如何执行一个产品的副本,并为不同的载体创建插入多个值。目前,我有数千种产品需要进行相应的分配。

我不知道这是否可能,如果你有任何建议,我将不胜感激。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-29 17:03:41

假设在将所有要分配的产品分配给运营商时,您有一个名为table_with_product_list的表(或列表

您可以使用插入select

例如多载波(1,2,3,4)

代码语言:javascript
复制
insert into ps_product_reference (id_product, id_carrier_reference)
select table_with_product_list.product_id, t.id_carrier
from table_with_product_list
cross join (
    select id_carrier from ps_carrier
    where id_carrier in  ( 1,2,3,4)

)  t

单载波(5)

代码语言:javascript
复制
insert into ps_product_reference (id_product, id_carrier_reference)
select table_with_product_list.product_id ,  5
from table_with_product_list
票数 1
EN

Stack Overflow用户

发布于 2018-01-29 18:49:59

由于数据库中没有任何内容表明产品应与载体1到4或载体5组合,因此您必须自己声明它们。在我看来,没有什么可以反对两个独立的INSERT语句。您可以使用文本编辑器或Excel,也可以使用自己快速编写的程序来构建VALUES子句:

代码语言:javascript
复制
insert into ps_product_carrier (id_product, id_carrier_reference)
values 
  (1111, 1),
  (1111, 2),
  (1111, 3),
  (1111, 4),
  (3333, 1),
  (3333, 2),
  (3333, 3),
  (2222, 4),
  ... ;

commit;

insert into ps_product_carrier (id_product, id_carrier_reference)
values 
  (2222, 5),
  (4444, 5),
  ... ;

commit;

或者从上面的第二个语句开始,然后使用以下语句代替第一个查询:

代码语言:javascript
复制
insert into ps_product_carrier (id_product, id_carrier_reference)
select p.id_product, c.id_carrier
from ps_product p
cross join (select id_carrier from ps_carrier where id_carrier in (1,2,3,4)) c
where p.id_product not in 
  (select id_product from ps_product_carrier where id_carrier_reference = 5);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48497173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档