Sql 在表中插入另一个表的一部分
我有两个表,第一个表的结构部分重述了第二个表的结构:Sql 在表中插入另一个表的一部分,sql,sql-server,temp-tables,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 我需要在table1中插入table2中具有给定ID的记录。 最好的方法是什么 我有两个想法: 1: 2: 还有什么办法?哪一种是最佳做法?您可以通过单个插入查询来实现: insert into table1 (a,
table1 (id, i, j, k, a, b, c, x, y, z) -- requests
table2 (id, a, b, c, d) -- essential elements / bank subjects
我需要在table1
中插入table2
中具有给定ID的记录。
最好的方法是什么
我有两个想法:
1:
2:
还有什么办法?哪一种是最佳做法?您可以通过单个插入查询来实现:
insert into table1 (a, b, c, d, x, y, z)
select a, b, c, d, @x, @y, @z
from table2
where id = @id
编辑:使用您添加的额外字段,它将是:
insert into table1 (i, j, k, a, b, c, x, y, z)
select @i, @j, @k, a, b, c, @x, @y, @z
from table2
where id = @id
您可以使用MySQL GUI工具,但我不知道是否有可能做到这一点。
我会这样做:
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
这样可以避免将数据放入局部变量和/或临时表中。性能应该更好
要实现的重要部分是,您可以在select中硬编码值。列的列出顺序(插入行)必须与列在选择行中的列出顺序相匹配。如果您在识别插入的数据时遇到困难,临时表在整个开发过程中可能会有所帮助。如果您需要执行“需要”光标在记录中循环的其他数据更改,那么它也很有用
否则,这只是添加字段时必须更新的代码的另一部分。这些似乎是很好的方法,怎么了?我只想找到最好的方法。并了解选择的原因。了解更多关于这个主题的信息。我已经编辑了我的帖子。请看。如果表1中包含表2中的列,那么您的解决方案会工作吗?当然可以。您可以使用任何可以放入常规选择中的内容。
insert into table1 (i, j, k, a, b, c, x, y, z)
select @i, @j, @k, a, b, c, @x, @y, @z
from table2
where id = @id
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