查询语句是这样: select * from PPROCINSTANCE_BK c 
inner join (select * from PPROCINSTANCE_BK a where activityname='End') b 
on c.v_ppoordernumber=b.v_ppoordernumber 
where c.activityname='NotificationWait' 
我想更新查询语句中 " activityname "的值为End 请纠正以下语句: update (select * from PPROCINSTANCE_BK c 
inner join (select * from PPROCINSTANCE_BK a where activityname='End') b 
on c.v_ppoordernumber=b.v_ppoordernumber 
where c.activityname='NotificationWait' )  d  set d.activityname='End'

解决方案 »

  1.   

    PPROCINSTANCE_BK  这个表没有一个主键吗?update PPROCINSTANCE_BK 
    set activityname='End'
    where 主键字段 in(
    select 主键字段 from PPROCINSTANCE_BK c 
    inner join (select * from PPROCINSTANCE_BK a where activityname='End') b 
    on c.v_ppoordernumber=b.v_ppoordernumber 
    where c.activityname='NotificationWait');
      

  2.   

    update()括号里是视图,就要求必须有一表的主键在相关列上
      

  3.   

    update (select * from PPROCINSTANCE_BK c 
    inner join (select * from PPROCINSTANCE_BK a where activityname='End') b 
    on c.v_ppoordernumber=b.v_ppoordernumber 
    where c.activityname='NotificationWait' )  d  set d.activityname='End'a,c 貌似是同一张表?
    你先执行下
    select * from PPROCINSTANCE_BK c 
    inner join (select * from PPROCINSTANCE_BK a where activityname='End') b 
    on c.v_ppoordernumber=b.v_ppoordernumber 
    where c.activityname='NotificationWait' 
    有记录吗?貌似是一个矛盾的语句