update part set id='1001'
from (select id from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="D:\xls\part.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]) t
where part.id=t.id
运行上面语句结果:(所影响的行数为 128 行)update part set re='IT部门'
from (select id from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="D:\xls\part.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]) t
where part.id=t.id
运行上面语句结果:子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。语句已终止。各位大侠,这到底是为什么呢????

解决方案 »

  1.   

    原贴:
    http://topic.csdn.net/u/20100810/17/c1b3e74b-6550-44f1-a4e3-fda49e47ac1f.html?seed=1636504281&r=67604183
      

  2.   

    update part set re='IT部门'
    from (select distinct id from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="D:\xls\part.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]) t
    where part.id=t.id
      

  3.   

    整理 openrowset 与 opendatasource 函数连接 Excel 的用法及问题 
    http://blog.csdn.net/xys_777/archive/2010/07/22/5755410.aspx
      

  4.   

    update a
    set id='1001',re='IT' from part a,(select id from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="D:\xls\part.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[sheet1$]) t
    where a.id=t.id
    这样试试