【问题标题】:Get data from one table and for each record from this table insert data into another table从一个表中获取数据,并将该表中的每条记录插入到另一个表中
【发布时间】:2014-03-15 10:43:55
【问题描述】:

我有 1 个表 userinfo,如下所示。可能有 1000 条记录。
我想从表 userinfo 中获取每条记录并插入 tblRating。 对于 RatingQue1、RatingQue2、RatingQue3,我想添加“4”。我想要 tblRating 的最终结果,如下面的 tblRating 所示。

用户信息

 Id   empname managername     
  1    E1      M1
  2    E2      M1
  .     .       .
  .     .       .
  100   E100    M1

tbl评分

 Id  ratingby   ratedto  RatingQue1 RatingQue2 RatingQue3 Avg 
 1     M1        E1        4            4          4       4
 2     M1        E2        4            4          4       4     
 .     .          .        .             .         .       .
 .     .          .        .             .         .       .
 100   M1        E100      4            4          4       4  

【问题讨论】:

    标签: mysql asp.net sql sql-server-2008


    【解决方案1】:

    切勿在查询中使用游标,这会降低查询性能

    按照你的意愿使用它给出o/p:

    在执行这个查询之前创建这两个表(rating,userinfo)

    **Insert into rating
    select *,4,4,4,4 from userinfo** 
    

    【讨论】:

      【解决方案2】:

      这应该会有所帮助

      表格

      create table userinfo(id int,emp varchar(20),manager varchar(20));
      create table rating (id int,ratedby varchar(20),ratedto varchar(20),r1 int,r2 int
                       ,r3 int,avg int);
      

      一些测试数据

      insert into userinfo values(1,'E1','M1');
      insert into userinfo values(2,'E2','M2');
      insert into userinfo values(4,'E4','M4');
      insert into userinfo values(3,'E3','M3');
      

      必填查询

      insert into rating (id,ratedby,ratedto) (select id,manager,emp from userinfo);
      update rating set r1=4,r2=4,r3=4;
      

      您可以使用另一个查询更新avg 列。我也用int进行测试,你可以使用合适的data typesSQL Fiddle link

      【讨论】:

        【解决方案3】:

        这对我有用

        DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
        SELECT Ename
        FROM Tegra
        
        DECLARE @id nvarchar(50)
        
        OPEN c
        
        FETCH NEXT FROM c INTO @id
        WHILE (@@FETCH_STATUS = 0)
        BEGIN
        INSERT INTO Rating2
        SELECT 'Manager','E1', @id, 4, 4, 4, 4, 4, 4       
        
        FETCH NEXT FROM c INTO @id
        END
        
        CLOSE c
        DEALLOCATE c
        

        【讨论】:

          猜你喜欢
          • 2017-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-01
          • 2023-04-03
          相关资源
          最近更新 更多