mysql - 计算后将数据从一个表插入到另一个表的过程

标签 mysql sql database stored-procedures

我有两张 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/

相关文章:

mysql - 为什么这个查询需要这么长时间?

sql - 您是否将数据库静态数据放入源代码控制中?如何?

sql - PostgreSQL 查询运行缓慢

php - 与php一起使用时如何在mysql中使用LIKE子句

php - 与 Laravel 的数据库关系

database - 在给定半径内搜索相应对象位置的酒店(Gem Geocoder)

Php 不会运行 MySQL 更新查询,但查询在 MySQL 控制台中有效

php - 使用 CONCAT() 的日志 IP 地址的 MySQL 更新问题

java - Cassandra 每日数据清除?

python - MySQL:在重复键上插入不同值时设置 "diff"位?