【问题标题】:Procedure to insert a data from one table to another table after calculations计算后将数据从一个表插入到另一个表的过程
【发布时间】:2014-08-10 04:03:13
【问题描述】:

我有两张桌子- 1. 用户 2.小​​部件 “用户”表中有数千个用户。我创建了一个名为“widgets”的新表。现在每个用户都有 5 个不同的小部件,我需要为“用户”表中的每个条目在“小部件”表中插入 5 个条目。 这是详细的场景-

“用户”表有列 -“id”

"widgets" 表有列- "user_id","widgetId","align","priority"

对于每个 user.id,我想像这样在“widgets”表中插入 5 条记录-

users 表中的第一个 id,1,1,1

users 表中的第一个 id,2,2,2

users 表中的第一个 id,3,3,3

users 表中的第一个 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 ..................... ......

我想创建一个程序来做同样的事情。请有人建议我该怎么做。

【问题讨论】:

    标签: mysql sql database stored-procedures


    【解决方案1】:

    我建议为默认设置一个单独的表。这不仅可以让默认值随着业务需求和产品的增长而轻松调整,还可以提供可用于其他目的的模板。

    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
          );
    

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-08
      • 2014-10-15
      • 1970-01-01
      相关资源
      最近更新 更多