先说问题吧我有表Table1,Table2
然后我需要根据Table1与Table2的一个相等的字段id从Table2里取数据date更新表Table1的date
我是用的联合查询
update Table1 set Table1.date=(select Table2.date from Table1 a,Table2 b where a.id=b.id)
..可是....问题是根据联合查询有多个返回值...
即Tabel1里有多于一个与Table2里id对应
..然后就执行不了了然后采用这个:
update Table1 set Table1.date=e.sdate from(select sdate,sid from(select Table2.date As sdate,Table2.id As sid from Table2 b inner join (select distinct id from Table1) a on b.id=a.id) ssss) e where Table1.id=e.sid通过了
只是在软件里执行...由于我数据量大就超时了,在查询分析器执行成功
我只能通过用调用osql执行了现在的问题是:能不能给我一个好的联合查询的语句,我这个慢还不一定对
就根据最上面的需求即可:然后我需要根据Table1与Table2的一个相等的字段id从Table2里取数据date更新表Table1的date
,但Tabel1里有多于一个与Table2里id对应
实现这个就可以了aiaiai就要一效率啊~

解决方案 »

  1.   

    直接這樣就可以了吧?
    update Table1
    set date=Table2.date
    from Table2
    where Table1.id=Table2.id
      

  2.   

    update t1
    set [date]= isnull((select top 1 [date] from Table2 where ID=t1.ID),[Date])
    from 
    Table1 t1
      

  3.   


    upate table1
    set [date]=table2.[date]
    from table1,table2 where table1.id=table2.id
    ado的连接的相关属性CommandTimeout 属性
    指示执行命令期间在终止尝试和产生错误之前需等待的时间。默认为30秒,只要将其设为0,即可无限等待。