我要用table3.name字段更新table1.name字段, table1.id 连接 table2.id, table2.name连接table3.name其中table3是变量,要用DECLARE @table3 varchar(50) 的形式。

解决方案 »

  1.   

    --try
    declare @str varchar(8000)
    DECLARE @table3 varchar(50)
    set @table3='table3'
    set @str='update t1 set name=t3.name
    from table1 t1 inner join table2 t2 on t1.id=t2.id
    inner join ' +@table3+' t3 on t2.name=t3.name'
    print @str
    exec(@str)
      

  2.   


    update table1 set table1.name=table3.name from table1 join table2
       on table1.id=table2.id join table3 on 
        table2.name=table3.name 
      

  3.   

    哦,不好意思,我说错了, t2和t3是通过tId连接的,不是通过tName;
    t3.tName 也是变化的,这个不是一列,列名是t2.tName的列值!!比如t2
    tId,tName
    1,  c1,
    2,  c2,
    3,  c1,
    4,  er,
    ....这个列值就是对应列3的列名,比如t3
    tId, c1, c2, x4, er..........很多列,要用动态的
    1,  a,   b,  c,  d
    2,  e,   b2, c2, d
    3,  a2,  bd, cr, dx
    4,  a,   b,  cx, d
    ...所以数据应该返回 a, b2, a2, d ,然后用这些值来更新Table1.name (table1.id = table2.id, table2.tId = table3.tId)