Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在表中插入另一个表的一部分_Sql_Sql Server_Temp Tables - Fatal编程技术网

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