我尝试将数据从一个表插入另一个表
表1(我从中选择数据)
更新
divid divname
--------------
1 abc
2 def
4 xyz
5 fgh
6 ekg
8 sdf
table2(我将数据插入的表格)
divdw_id divid
更新 我想要这样的数据
divdw_id divid
001 1
002 2
003 4
004 5
005 6
006 8
我尝试此查询插入数据,但这显示错误
insert into table2
values (001, Divid)
select DivId
from Oper_Db.dbo.table1
但这显示错误
无效的列名称'Divid'。
那么如何解决此错误?
更新
当我只运行select语句查询
时insert into DivisionMap (divBI_Id, DiviOp_id)
select RIGHT('000'+CAST(eindex as VARCHAR(3)),3),eindex from mydatabase.dbo.employee
然后就像这样显示
(No column name) eindex
000 0
022 22
024 24
025 25
027 27
028 28
我喜欢这样的地方
(No column name) eindex
000 0
001 22
002 24
003 25
004 27
005 28
答案 0 :(得分:1)
你做错了。您一次只能为一行提供1行如果您希望第一列硬编码值如001而第二列使用Table1.Divid,请尝试以下操作:
insert into table2 (divdw_id,Divid)
select '001',DivId from Oper_Db.dbo.table1
或者如果001是序列号,那么试试这个
insert into table2 (divdw_id,Divid)
select ROW_NUMBER() OVER(ORDER BY DivId),DivId from Oper_Db.dbo.table1
如果您需要在divdw_id前加上0'请尝试此
insert into table2 (divdw_id,Divid)
select RIGHT('000'+CAST(ROW_NUMBER() OVER(ORDER BY DivId) AS VARCHAR(10)),3),DivId from Oper_Db.dbo.table1
如果你想从0开始序列,请使用此
insert into table2 (divdw_id,Divid)
select RIGHT('000'+CAST(ROW_NUMBER() OVER(ORDER BY DivId)-1 AS VARCHAR(10)),3),DivId from Oper_Db.dbo.table1
答案 1 :(得分:0)
https://docs.microsoft.com/en-us/sql/t-sql/statements/insert-transact-sql
insert into table2 (divdw_id, divid)
select RIGHT('000'+CAST(DivId as VARCHAR(3)),3),DivId from Oper_Db.dbo.table1
ps算命先生今天度假,所以我们会猜测你自己的欲望