搞定了
我用的INSERT INTO main2 SELECT * FROM  OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=YES;IMEX=1;database=f:\student\manager\excel\2.xls;','select * from [Sheet1$]') as i where not exists(select * from main2 where 学号=i.学号)

解决方案 »

  1.   

    --假设你的表结构是result(学号,课程,成绩),那么主键就应该是xu学号和课程--则可以用下边的语句来判断并且有选择的插入insert result
    select * from main2 m
    where not exists
    (select * from result where 学号=m.学号 and 课程=m.课程)
      

  2.   

    INSERT INTO main2 SELECT * FROM  OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=YES;IMEX=1;database=f:\student\manager\excel\2.xls;','select * from [Sheet1$]')  where 学号 not in (select 学号 from main2 )
      

  3.   

    declare @ii int,@xhSELECT @ii=count(*) ,@xh=isnull(i.学号,'') FROM  OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=YES;IMEX=1;database=f:\student\manager\excel\2.xls;','select * from [Sheet1$]') as i where not exists(select * from main2 where 学号=i.学号)
    if @ii=0 then beginINSERT INTO main2 SELECT * FROM  OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=YES;IMEX=1;database=f:\student\manager\excel\2.xls;','select * from [Sheet1$]') as i where not exists(select * from main2 where 学号=i.学号)
    else
    RAISERROR('已经有号了'+@xh)end
      

  4.   

    谢谢各位关注
     感谢hsj20041004(光芒)我用查询分析器,发现有错,
    服务器: 消息 156,级别 15,状态 1,行 7
    在关键字 'then' 附近有语法错误。
    服务器: 消息 156,级别 15,状态 1,行 12
    在关键字 'else' 附近有语法错误。
    服务器: 消息 170,级别 15,状态 1,行 14
    第 14 行: '+' 附近有语法错误。想问一下,返回得错误是以什么形式出现,因为我做的是asp.net,想让他以网页的形式,您这种是什么形式阿。谢谢
      

  5.   

    sorry 写错了 这样declare @ii int,@xhSELECT @ii=count(*) ,@xh=isnull(i.学号,'') FROM  OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=YES;IMEX=1;database=f:\student\manager\excel\2.xls;','select * from [Sheet1$]') as i where not exists(select * from main2 where 学号=i.学号)
    if (@ii=0) beginINSERT INTO main2 SELECT * FROM  OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=YES;IMEX=1;database=f:\student\manager\excel\2.xls;','select * from [Sheet1$]') as i where not exists(select * from main2 where 学号=i.学号)
    else
    RAISERROR('已经有号了'+@xh)end
      

  6.   

    declare @ii int,@xhSELECT @ii=count(*) ,@xh=isnull(i.学号,'') FROM  OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=YES;IMEX=1;database=f:\student\manager\excel\2.xls;','select * from [Sheet1$]') as i where not exists(select * from main2 where 学号=i.学号)
    if (@ii=0) INSERT INTO main2 SELECT * FROM  OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;HDR=YES;IMEX=1;database=f:\student\manager\excel\2.xls;','select * from [Sheet1$]') as i where not exists(select * from main2 where 学号=i.学号)
    else
    RAISERROR('已经有号了'+@xh)
      

  7.   

    raiserror是个sql中抛出错误的关键字,你可以查看sql的联机帮助
    然后你在程序中捕捉错误就可以了