我有两张 table - 1. 用户 2. 小部件 “用户”表中有数千个用户。我创建了一个名为“widgets”的新表。现在每个用户都有 5 个不同的小部件,我需要为“用户”表中的每个条目在“小部件”表中插入 5 个条目。 这是详细的场景-
“用户”表有列 -“id”
“widgets”表有列 - “user_id”、“widgetId”、“align”、“priority”
对于每个 user.id,我想将 5 条记录插入到“widgets”表中,如下所示 -
用户表中的第一个 ID,1,1,1
用户表中的第一个 ID,2,2,2
用户表中的第一个 ID,3,3,3
用户表中的第一个 ID,4,4,4
用户表中的第一个 ID,5,5,5
用户表中的第二个 ID,1,1,1
用户表中的第二个 ID,2,2,2
用户表中的第二个 ID,3,3,3
用户表中的第二个 ID,4,4,4
用户表中的第二个 ID,5,5,5 ……………… …………
我想创建一个程序来执行相同的操作。请有人建议我该怎么做。
最佳答案
我建议为默认值创建一个单独的表。这不仅允许随着业务需求和产品的增长轻松调整默认值,而且还允许将模板用于其他目的。
create table DefaultWidgets (widgetid INT, align INT, priority INT);
insert into DefaultWidgets values (1,1,1);
insert into DefaultWidgets values (2,2,2);
insert into DefaultWidgets values (3,3,3);
insert into DefaultWidgets values (4,4,4);
insert into DefaultWidgets values (5,5,5);
insert into widgets values (1,1,100,100);
-- mainly to demonstrate that a new row won't be inserted for user 1, widget 1.
INSERT INTO widgets
SELECT id, r.widgetid, r.align, r.priority
FROM users u
CROSS JOIN DefaultWidgets R
WHERE NOT EXISTS (
SELECT 1
FROM widgets w
WHERE userid = u.id
AND w.widgetid=R.widgetid
);
关于mysql - 计算后将数据从一个表插入到另一个表的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24309605/