CREATE TABLE TEST2
(
RowID INT IDENTITY(1,1),
Ratio INT
)
CREATE TABLE TEST
(
RowID INT IDENTITY(1,1),
Col1 INT,
Col2 INT,
Col3 INT
)
Agora, eu quero inserir valores table TEST
como
INSERT INTO TEST
(Col1, Col2, Col3)
values
(10,
col1,
col2 * (select Ratio
from TEST2 T2 INNER JOIN TEST T
ON T2.RowID = T.RowID)
);
Acima query
é o que eu quero. Como poderíamos fazer insert
a operação acima usando a maneira otimizada?
Parece que você deseja - se a tabela
test
tiver N linhas - inserir mais N linhas, com os valores calculados a partir da junção entre as linhas existentes emtest
etest2
.Você então precisa usar a
INSERT ... SELECT
sintaxe e não o arquivoINSERT ... VALUES
. Supondo que hajatest2
umaUNIQUE
restrição em(RowID)
, o seguinte inserirá (max) N linhas emtest
:Se você deseja atualizar as N linhas existentes, precisa de um
UPDATE
, não de umINSERT
. Supondo que as linhas já tenham valores emcol1
ecol2
:A terceira atribuição provavelmente deve ser alterada, se
Col1
tiver apenas valores e você deseja atualizar ambosCol2
eCol3
, com base nosCol1
valores, para: