日期:2014-05-17  浏览次数:20498 次

我快疯了,这个语句为何就是不能执行啊???
我是新学者,win7 装的SQL 2005,在Sales_manager表 emp_name列中插入project表格中查到的sales_manager:

1.sales_manager表
-emp_name
-emp_sex
-emp_position

2.Project 表
-project_name
-Project_Type
-Sales_Manager

用语句如下:
insert into sales_manager (emp_name) values (select sales_manager from project)

查询分析器报如下错误:

消息 156,级别 15,状态 1,第 1 行
关键字 'select' 附近有语法错误。
消息 102,级别 15,状态 1,第 1 行
')' 附近有语法错误。

究竟是哪里有错?实在看不出来。。
多谢指教

------解决方案--------------------
insert into sales_manager (emp_name) 
select sales_manager from project


语法问题当然报错
------解决方案--------------------
values后面是直接跟值,
如果用嵌套insert into 表名(列名1,列名2...) select 列名1,列名2... from 表
两个列数量必须一致
------解决方案--------------------
你的语法是错误的。
如果你是想把一张表里的数据插入一张表里的话,首先字段的类型要相同
给你演示一下:
create table sales_manager
(
  emp_name varchar(20) null,
  emp_sex bit null,
  emp_position varchar(20) 
)
create table Project 
(
  project_name varchar(20) null,
  Project_Type bit null,
  Sales_Manager varchar(20)
 )
 
 insert into sales_manager values('tom','1','abc')
 insert into Project values('sa','2','def')

建表并插入数据
 insert into sales_manager (emp_name) 
 select sales_manager from project
 select * from sales_manager
------------------------------------------------
emp_name             emp_sex emp_position
-------------------- ------- --------------------
tom                  1       abc
def                  NULL    NULL

(2 行受影响)


如果你插入时,插入数据的字段类型不一样,他会报错.
 insert into sales_manager (emp_sex) 
 select sales_manager from project
----------------------------------------------
消息 245,级别 16,状态 1,第 1 行
在将 varchar 值 'def' 转换成数据类型 bit 时失败。

------解决方案--------------------
看到楼主写的我们也疯了,确实不是那样写的
insert into sales_manager (emp_name) 
select sales_manager from project