update t1
  SET  t1.QUERY_YN = t2.QUERY_YN,   
       t1.INSERT_YN = t2.INSERT_YN,   
       t1.DELETE_YN = t2.DELETE_YN,   
       t1.SAVE_YN = t2.SAVE_YN,   
       t1.PRINT_YN = t2.PRINT_YN,   
       t1.ETC_YN = t2.ETC_YN
    FROM TSECPERPROGRAM t1,TSECPERPROGRAM t2
   WHERE ( t1.LMENU_ID = t2.LMENU_ID ) and  
         ( t1.MMENU_ID = t2.MMENU_ID ) and  
         ( t1.PROGRAM_ID = t2.PROGRAM_ID ) and  
         (( t2.SNO = '111' and t1.SNO='222' ) ) ;  
这个语法不能更新成功,有什么错?

解决方案 »

  1.   

    update t1 set ( , , ,...) = (select...  from...   where ...)
      

  2.   

    SNO 、LMENU_ID 、MMENU_ID,PROGRAM_ID 组成表的复合主键,
    那这个更新该怎么写呢?
      

  3.   

    类似这样。
    update IDS
    set (NAMES,Names2)
    = (select t2.NAMES,t2.Names2 from IDS t2 where id=101 and t2.id2=ids.id2 )
    where id=102
      

  4.   

    update TSECPERPROGRAM t1
    SET  ( t1.QUERY_YN, 
           t1.INSERT_YN, 
           t1.DELETE_YN,  
           t1.SAVE_YN,
           t1.PRINT_YN, 
           t1.ETC_YN )= 
       (select t2.QUERY_YN,    
     t2.INSERT_YN,  
     t2.DELETE_YN,  
     t2.SAVE_YN,      
     t2.PRINT_YN,    
     t2.ETC_YN         
    from TSECPERPROGRAM t2 
        where t1.LMENU_ID = t2.LMENU_ID  and   
              t1.MMENU_ID = t2.MMENU_ID  and   
              t1.PROGRAM_ID = t2.PROGRAM_ID  and   
              t2.SNO =  '111 ' ) 
    where t1.SNO= '222 ' );