42 sql t-sql sql-server sql-server-2005
在SQL Server中,我尝试使用以下查询将值从一个表插入另一个表:
delete from tblTable1
insert into tblTable1 select * from tblTable1_Link
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
列名或提供的值数与表定义不匹配.
我确信这两个表具有相同的结构,相同的列名和相同的数据类型.
请帮忙!
gbn*_*gbn 40
他们没有相同的结构......我可以保证他们是不同的
我知道你已经创建了它...... 数据库中已经有一个名为'tbltable1'的对象
你可能想要的是这个(这也解决了你的另一个问题):
Drop table tblTable1
select * into tblTable1 from tblTable1_Link
Run Code Online (Sandbox Code Playgroud)
Adr*_*der 20
对于插入,最好指定列名,请参阅以下内容
DECLARE @Table TABLE(
Val1 VARCHAR(MAX)
)
INSERT INTO @Table SELECT '1'
Run Code Online (Sandbox Code Playgroud)
工作正常,更改表def以导致错误
DECLARE @Table TABLE(
Val1 VARCHAR(MAX),
Val2 VARCHAR(MAX)
)
INSERT INTO @Table SELECT '1'
Run Code Online (Sandbox Code Playgroud)
消息213,级别16,状态1,行6插入错误:列名称或提供的值的数量与表定义不匹配.
但改变上面的
DECLARE @Table TABLE(
Val1 VARCHAR(MAX),
Val2 VARCHAR(MAX)
)
INSERT INTO @Table (Val1) SELECT '1'
Run Code Online (Sandbox Code Playgroud)
作品.您需要更具体地指定列
提供结构,我们可以看看
小智 15
这是一篇较老的帖子,但我还想提一下,如果你有类似的东西
insert into blah
select * from blah2
Run Code Online (Sandbox Code Playgroud)
和blah和blah2完全相同,请记住,计算列会抛出同样的错误......
我刚刚意识到,当上述失败时,我试过了
insert into blah (cola, colb, colc)
select cola, colb, colc from blah2
Run Code Online (Sandbox Code Playgroud)
在我的例子中,它是fullname字段(从第一个和最后一个计算,等等)
小智 9
问题是您尝试在不使用列的情况下将数据插入数据库.Sql server为您提供该错误消息.
错误:insert into users values('1', '2','3')- 只要您只有3列,这就可以正常工作
如果你有4列,但只想插入3列
正确: insert into users (firstName,lastName,city) values ('Tom', 'Jones', 'Miami')
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
288680 次 |
| 最近记录: |