CREATE TABLE TEST2
(
RowID INT IDENTITY(1,1),
Ratio INT
)
CREATE TABLE TEST
(
RowID INT IDENTITY(1,1),
Col1 INT,
Col2 INT,
Col3 INT
)
现在,我想在table TEST
as中插入值
INSERT INTO TEST
(Col1, Col2, Col3)
values
(10,
col1,
col2 * (select Ratio
from TEST2 T2 INNER JOIN TEST T
ON T2.RowID = T.RowID)
);
以上query
是我想要的。我们如何insert
使用优化方式完成上述操作?
似乎您想要 - 如果表有 N 行 - 再插入 N 行,并根据和
test
中现有行之间的连接计算值。test
test2
然后您需要使用
INSERT ... SELECT
语法而不是INSERT ... VALUES
. 假设 对test2
有一个UNIQUE
约束(RowID)
,那么下面将插入(最大)N 行到test
:如果要更新现有的 N 行,则需要一个
UPDATE
,而不是INSERT
. 假设这些行已经在col1
和中有值col2
:第三个赋值可能应该改变,如果只有
Col1
值并且你想根据这些值将Col2
和更新为:Col3
Col1