就是想根据B表列的内容,更新A表的一列。
A和B二个表,
A表.id,订单号,产品,分类
    1     A1       B1
    2   A2       B2 
    1     A3       B5
    2     A4       B1
        5    A5       B3
       6     A6       B1
       ...    ...       ....
       ...    ...       .....B表 : id  产品,属性
       1     B1     1
            2      B2     1
            3      B3     2
            4      B4      1
            5      B5       2
            6       B7      1需求:如果B表产品属性为1,则更新A表的分类为“yes”,如果产品属性为2,则更新A表的分类为"no"。
求一个SQL语句,谢谢!

解决方案 »

  1.   

    merge into A表 a
    using B表 b
    on(a.产品=b.产品)
    when matched then
    update set a.分类=decode(b.属性,1,'yes',2,'no',null)
      

  2.   

    merge into a using b on (a.产品=b.产品) when matched then update set 分类=decode(b.属性,1,'yes',2,'no')
      

  3.   

    update tabelA a set a.分类=(select (case 属性 when 1 then 'yes' when 2 then 'no' else '' end) from tableB b
    where b.产品=a.产品)
      

  4.   

    Oracle还是使用decode吧,写起来更简单点,用法自己百度下
      

  5.   

    merge into a using b on (a.产品=b.产品) when matched then update set 分类=decode(b.属性,1,'yes',2,'no')
      

  6.   

    update a set sx = 
    (
    select 
    case b.sx 
      when 1 then 'yes' 
      when 2 then 'no' 
    end sx    
    from b where b.cp = a.cp
    )
      

  7.   

    用两个update语句可以么?UPDATE A SET 分类='YES' WHERE A.ID IN(SELECT A.ID FROM A LEFT JOIN B ON A.产品=B.产品 WHERE B.属性=1);
    UPDATE A SET 分类='NO' WHERE A.ID IN(SELECT A.ID FROM A LEFT JOIN B ON A.产品=B.产品 WHERE B.属性=12);