SQL SERVER 中的 insert into select 方法运用错误了!帮忙.....
insertinto表1(num1,num2,num3)selectnum1,num2,num3from表2然后表1(num1,num2,num3)都有红色波浪线报错,但...
insert into 表1(num1,num2,num3)
select num1,num2,num3
from 表2
然后 表1 (num1,num2,num3) 都有红色波浪线报错,但是可以运行,这是为什么? 展开
select num1,num2,num3
from 表2
然后 表1 (num1,num2,num3) 都有红色波浪线报错,但是可以运行,这是为什么? 展开
展开全部
你是不是在 SQL Server Management Studio 2008 运行的呀?
表1 (num1,num2,num3) 都有红色波浪线报错,但是可以运行
原因可能是这个 表1 是你刚才新创建的.
SQL Server Management Studio 启动连接的时候, 应该把当前数据库的 所有的 表/视图/函数/存储过程/等信息. 就加载进入内存了.
所以当你写
SELECT 表2. 的时候, 会自动把 表2 所有的列, 显示出来,让你选择。
但是如果你新建立的表。
由于没有加载到内存里面。
因为 SQL Server Management Studio 不知道(不确定) 到底有没有 表1
内存里面查询不到, 那么你又写了
insert into 表1(num1,num2,num3)
SQL Server Management Studio 怀疑这个表/列 是不存在的, 因此用 红色波浪线报错
但是运行的时候, 是把 SQL 语句,发送到服务器方去执行的。
因此,尽管 怀疑这个 SQL语句,可能不对, 但是还是 发送到服务器那里去。
服务器知道, 有 表1, 而且 表1 有 num1,num2,num3 字段。
因此能够正常的执行。
其实,你只要退出 SQL Server Management Studio
再运行一次 SQL Server Management Studio
应该就没有 红色波浪线报错 了。
表1 (num1,num2,num3) 都有红色波浪线报错,但是可以运行
原因可能是这个 表1 是你刚才新创建的.
SQL Server Management Studio 启动连接的时候, 应该把当前数据库的 所有的 表/视图/函数/存储过程/等信息. 就加载进入内存了.
所以当你写
SELECT 表2. 的时候, 会自动把 表2 所有的列, 显示出来,让你选择。
但是如果你新建立的表。
由于没有加载到内存里面。
因为 SQL Server Management Studio 不知道(不确定) 到底有没有 表1
内存里面查询不到, 那么你又写了
insert into 表1(num1,num2,num3)
SQL Server Management Studio 怀疑这个表/列 是不存在的, 因此用 红色波浪线报错
但是运行的时候, 是把 SQL 语句,发送到服务器方去执行的。
因此,尽管 怀疑这个 SQL语句,可能不对, 但是还是 发送到服务器那里去。
服务器知道, 有 表1, 而且 表1 有 num1,num2,num3 字段。
因此能够正常的执行。
其实,你只要退出 SQL Server Management Studio
再运行一次 SQL Server Management Studio
应该就没有 红色波浪线报错 了。
展开全部
那是因为你没有指名数据库,默认状态下是master库
你可以在你的语句前加上
USE 数据库名(你所操作的表所在的数据库)
insert into 表1(num1,num2,num3)
select num1,num2,num3
from 表2
就ok
你可以在你的语句前加上
USE 数据库名(你所操作的表所在的数据库)
insert into 表1(num1,num2,num3)
select num1,num2,num3
from 表2
就ok
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:
INSERT INTO SELECT语句复制表数据
--1.创建测试表
create TABLE Table1
(
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
create TABLE Table2
(
a varchar(10),
c varchar(10),
d int,
CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
GO
--2.创建测试数据
Insert into Table1 values('赵','asds','90')
Insert into Table1 values('钱','asds','100')
Insert into Table1 values('孙','asds','80')
Insert into Table1 values('李','asds',null)
GO
select * from Table2
--3.INSERT INTO SELECT语句复制表数据
Insert into Table2(a, c, d) select a,c,5 from Table1
GO
--4.显示更新后的结果
select * from Table2
GO
--5.删除测试表
drop TABLE Table1
drop TABLE Table2
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:
INSERT INTO SELECT语句复制表数据
--1.创建测试表
create TABLE Table1
(
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
create TABLE Table2
(
a varchar(10),
c varchar(10),
d int,
CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
GO
--2.创建测试数据
Insert into Table1 values('赵','asds','90')
Insert into Table1 values('钱','asds','100')
Insert into Table1 values('孙','asds','80')
Insert into Table1 values('李','asds',null)
GO
select * from Table2
--3.INSERT INTO SELECT语句复制表数据
Insert into Table2(a, c, d) select a,c,5 from Table1
GO
--4.显示更新后的结果
select * from Table2
GO
--5.删除测试表
drop TABLE Table1
drop TABLE Table2
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
报错内容是什么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
”insert into select“ 中的原则就是导入数据的表字段结构必须和查询表字段结构一致才可以的,举例:
sql:insert into tablename2( id) as select id from tablename1 where 条件;
解释:tablename1和tablename2中id字段必须是同一个类型,并且查询表中的id字段长度是不能大于tablename2表中的定义字段长度的。
备注:as是可以省略的。如果多个字段,字段读取和插入顺序必须一致。
sql:insert into tablename2( id) as select id from tablename1 where 条件;
解释:tablename1和tablename2中id字段必须是同一个类型,并且查询表中的id字段长度是不能大于tablename2表中的定义字段长度的。
备注:as是可以省略的。如果多个字段,字段读取和插入顺序必须一致。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询