A表:分别有id列、a1、a2三个列;
B表:分别是id列、tableName、idInTable、b3三个列。B表b3列原来是用来放几个表的相通性质的数据的,现在想把这些数据放回各自的表中。
现在要把b3列的数据存入a2列,我写了几个sql语句,都说:无法绑定由多个部分组成的标识符 "B.b1"。
我写的sql语句如下:update A set a2=case when A.id=B.idInTable then right(B.b3, 3) else '' end where B.tableName='A'
--另一条语句
update A set a2=right(B.b3, 3) where B.tableName='A' and A.id=B.idInTable
与指针应该可以解决这个问题,我想问问可否用一条语句完成这个功能。

解决方案 »

  1.   

    update A set a2=case when A.id=B.idInTable then right(B.b3, 3) else '' end 
    from B
    where B.tableName='A'
      

  2.   


    update A 
    set a2=case when A.id=B.idInTable then right(B.b3, 3) else '' end 
    from B
    where B.tableName='A'
    --另一条语句
    update A 
    set a2=right(B.b3, 3) 
    from B
    where B.tableName='A' and A.id=B.idInTable
      

  3.   

    JUST TRY.
    UPDATE A SET a2=
    CASE WHEN A.id=B.idInTable THEN RIGHT(B.b3, 3) 
    ELSE '' END  FROM A , B  WHERE B.tableName='A' A.id=B.idInTable
      

  4.   

    总结:用第二条语句比较准确,第一条语句会多做了很多where B.tableName='A'的时候a2=''的操作,没有必要。