在SQL Server中将表中的数据插入另一个表

时间:2017-11-09 06:58:47

标签: sql-server insert

我尝试将数据从一个表插入另一个表

表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

2 个答案:

答案 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算命先生今天度假,所以我们会猜测你自己的欲望