aba*_*hev 0 sql sql-server temp-tables
我有两个表,第一部分重构的结构,迭代第二个结构:
table1 (id, i, j, k, a, b, c, x, y, z) -- requests
table2 (id, a, b, c, d) -- essential elements / bank subjects
Run Code Online (Sandbox Code Playgroud)
我需要使用给定的ID 插入table1记录table2.这样做的最佳方法是什么?
我有两个想法:
1:
DECLARE @a type, @b type, @c type
SELECT @a = a, @b = b, @c = c, FROM table2 WHERE id = @id
INSERT INTO table1 (i, j, k, a, b, c, x, y, z)
VALUES (@i, @j, @k, @a, @b, @c, @x, @y, @z)
Run Code Online (Sandbox Code Playgroud)
2:
CREATE TABLE #result (a type, b type, c type)
SELECT a, b, c INTO #result FROM table2 WHERE id = @id
INSERT INTO table1 (i, j, k, a, b, c, x, y, z)
VALUES (@i, @j, @k,
(SELECT a FROM #result),
(SELECT b FROM #result),
(SELECT c FROM #result),
@x, @y, @z)
Run Code Online (Sandbox Code Playgroud)
还有另一种方法吗?哪一个是最好的做法?
我会这样做:
INSERT INTO table1 (i, j, k, a, b, c, d, x, y ,z)
Select @i, @j @k, a, b, c, d, @x, @y, @z
From table2
Where id = @id
Run Code Online (Sandbox Code Playgroud)
这样可以避免将数据导入局部变量和/或临时表.表现应该更好.
要实现的重要部分是您可以在选择中硬编码值.列出列的顺序(插入行)必须与列出选择行中的列的顺序相匹配.