给你两个表,一个是渠道管理表A,一个是渠道主管理人的表B,然后给你两个条件是在表A中,表A的id就是表B的渠道ID,现在我需要根据表A里面的这两个条件来更新表B里面的两条数据,下面是我写的查询这条需要更新数据的SQL语句:select * from SUMEC_SC_CHANNEL_INFO a ,SUMEC_SC_CHANNEL_CLERK_INFO b  where a.id=b.channel_id  and  a.channel_name='FADIS S.P.A' and a.contact_name='邵馨元' ,求教大神指点迷津

解决方案 »

  1.   

    update SUMEC_SC_CHANNEL_CLERK_INFO b
    set (b.channel_name,b.contact_name)=(select channel_name,contact_name from SUMEC_SC_CHANNEL_INFO a 
                                     where a.id=b.channel_id 
                                     and  a.channel_name='FADIS S.P.A' 
                                     and a.contact_name='邵馨元' )
      

  2.   

    要注意子查询(select channel_name,contact_name from SUMEC_SC_CHANNEL_INFO a 
                                     where a.id=b.channel_id 
                                     and  a.channel_name='FADIS S.P.A' 
                                     and a.contact_name='邵馨元' ) 这个必须返回单行,即a.id=b.channel_id 相匹配的id必须返回单行
      

  3.   

    update  SUMEC_SC_CHANNEL_channel_INFO a set CLERK_NAME='U0009362' , PERSON_NAME='刘振兴' where  sumec_ec_channel_info.channel_name='FADIS S.P.A' and sumec_ec_channel_info.contact_name='邵馨元'  and  sumec_ec_channel_info.id  in  (select  a.cid  from  a  where  sumec_ec_channel_info.id=a.channel_id)我写的更新语句是这个样子的,不知道是否正确,因为一些原因无法在电脑上去验证,所以来请教大佬
      

  4.   

    不行的,会报错的,这个语句没法改,你只能按照我上面的那样用子查询。
    你直接用sumec_ec_channel_info.channel_name='FADIS S.P.A'  (表名+字段名)这样是不行的,语法不通过。表sumec_ec_channel_info必须在from后面才能被引用。
      

  5.   

    然后我要根据表SUMEC_SC_CHANNEL_INFO与表SUMEC_SC_CHANNEL_CLERK_INFO的这个关系和表Aa.channel_name='FADIS S.P.A'  and a.contact_name='邵馨元'的这两个关系然后去更改表B的CLERK_NAME和CHANNEL_ID这两个字段的值,并且, 这两个字段值的内容是我手动赋值上去的意思就是表SUMEC_SC_CHANNEL_INFO里面的ID与表SUMEC_SC_CHANNEL_CLERK_INFO里面的CHANNEL_ID是相等的,这个条件是能够保持数据的一致性,然后还有表SUMEC_SC_CHANNEL_INFO两个已知的条件,去更改表SUMEC_SC_CHANNEL_CLERK_INFO里面的CLERK_NAME与CHANNEL_ID这两个字段的值,并且这两个值是我重新给他的