SQL Server:从另一个表获取值,进行计算并保存到表

时间:2018-07-10 21:35:03

标签: sql-server

我有一张有180万条记录的表。我需要使用表中的列值进行计算并将其保存到另一个表中。我在C#中尝试过,但是一一插入太慢了。 BulkCopy选项对于我的项目也不是一个好的解决方案。我对SQL查询没有任何经验。

表1

Id int
x float
y float

Id    x       y
--------------------
1     45.55   25.15
2     65.45   35.66
3     33.25   42.49

我想使用x,y值进行计算并将其保存到Table2

xx = 175 * (180 + x)
yy = 175 * (90 - y)

表2

Id  int
xx  int
yy  int

在我的C#代码中

int xx = (int)((175) * (180 + node.x));
int yy = (int)((175) * (90 - node.y));

然后我将其保存为foreach循环中的insert,但是它要花很多时间。

1 个答案:

答案 0 :(得分:0)

您最好的选择是使用SQL查询,但是我可以确定您已将索引应用于table1,以便加快处理速度。

对于查询-将其放入SQL Server Management Studio中的新查询窗口中,并确保您的数据库是默认源。

INSERT INTO Table2 (xx, yy)
    SELECT 
        CAST((175 * (180 + x)) AS INT) AS xx, 
        CAST((175 * (90 - y)) AS INT) AS yy 
    FROM
        table1

请注意,因为您已经为Table2定义了表头,所以不需要xx和yy。

Cast将总和的总答案转换为整数-我发现在进行插入操作时转换为整数有时会有些粗略,因此在插入操作之前进行转换会使事情变得简单。