a表有字段a1,a2,a3,b表有字段b1,b2,b3,c表有字段c1,c2,c3,d表有字段d1,d2,d3已知条件有a1=b1,b2=d2,c1=d1在满足以上条件的情况下,想使a3=c3更新语句应该怎么写?

解决方案 »

  1.   

    /*根据楼主的描述,a1=b1,b2=d2,c1=d1  ,这四个表的关系应该是1对1的关系
    */
    create table a(a1 nvarchar(10),a2 nvarchar(10),a3 nvarchar(10))
    create table b(b1 nvarchar(10),b2 nvarchar(10),b3 nvarchar(10))
    create table c(c1 nvarchar(10),c2 nvarchar(10),c3 nvarchar(10))
    create table d(d1 nvarchar(10),d2 nvarchar(10),d3 nvarchar(10))insert a
    select 'acol11','acol21',null union
    select 'acol12','acol22',null union
    select 'acol13','acol23',null union
    select 'acol14','acol24',null 
    insert b
    select 'acol11','bcol21',null union
    select 'acol12','bcol22',null union
    select 'acol13','bcol23',null union
    select 'acol14','bcol24',null 
    insert d
    select 'dcol11','bcol21',null union
    select 'dcol12','bcol22',null union
    select 'dcol13','bcol23',null union
    select 'dcol14','bcol24',null insert c
    select 'dcol11','ccol21','ccol31' union
    select 'dcol12','ccol22','ccol32' union
    select 'dcol13','ccol23','ccol33' union
    select 'dcol14','ccol24','ccol34' update a
    set a.a3=V.V13
    from (
      select b.b1 as V11,c.c3 as V13
      from d
      left join b on d.d2=b.b2
      left join c on d.d1=c.c1) as V 
    where V.v11=a.a1/*
    上面语句连接比较多。其基本语句如下
    update tb2 set tb2.col2=tb1.col2 from tb1 where tb2.col1=tb1.col1
    */