两个表:loupan表、test表
其中loupan表中loupanname字段和test表keyword字段相等
怎么根据这个更新loupan表的zhandimianji字段值为test表的zzdmj字段中的值

解决方案 »

  1.   

    update loupan a set zhandimianji=(select zzdmj from test where keyword=loupanname and rownum=1);
      

  2.   


    update a
    set a.zhandimianji=b.zzdmj
    from loupan a,test b
    where a.loupanname=b.keyword
      

  3.   


    这个写法是SQL SERVER的语法。在ORACLE也有类似的语法,不过ORACLE有个条件限制,应该是两表的关联字段必须为主键
      

  4.   

    最近一直使用sql server,搞混淆了,可以参考1楼的
      

  5.   

    Update loupan a Set zhandimianji (
    Select zzdmj From test b Where b.keyword = a.loupanname);
      

  6.   

    Update loupan a Set zhandimianji = (
    Select zzdmj From test b Where b.keyword = a.loupanname);
      

  7.   


    --ORACLE 要根据两额表更新有好几种方法--类似这个应该可以
    update loupan lp
       set lp.zhandimianji = (select zzdmj
                                from test t
                               where t.keyword = lp.loupanname)
     where exists (select 1 from test t where t.keyword = lp.loupanname)--这种方法是比较多人用的
      

  8.   

    这个应该还是要加 where exists的条件,您觉得呢?
      

  9.   

    没必要,子查询的where条件不满足,自然不会去更新表loupan
      

  10.   

    我觉得应该加吧, 如果查询出的值有多个, 那么这个SQL就要报错了!
      

  11.   

    如果用ROWNUM=1 这个条件,尽管不会报错,但是会出问题的。 这个不是很好的选择,数据可能不是预期所想
      

  12.   

    这个方法才对,不加 exists 的话,对于关联不到test表的记录都会更新为空的,但要保证 test 表的keyword值都是唯一的,要不会报错。加上rownum=1 也可以,但会产生数据问题。