我有两张桌子 - 用户 小部件 "用户"中有数千名用户表。我创建了一个名为" widgets"的新表。现在每个用户都有5个不同的小部件,我需要在"小部件"中插入5个条目。 "用户"中每个条目的表格表。 这是详细的场景 -
"用户"表中有列 - " id"
"小部件"表格有列 - " user_id"," widgetId"," align"," priority"
并且对于每个user.id我想在"小部件中插入5条记录"像这样的表 -
来自用户表的第一个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
来自users表的第二个id,5,5,5 .................... ...............
我想创建一个相同的程序。请有人建议我怎么做。
答案 0 :(得分:0)
我建议使用单独的默认表。这不仅可以在业务需求和产品增长时轻松调整默认值,还可以使用可用于其他目的的模板。
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
);