UPDATE 
(
SELECT  WorkID,
WK.PpjID,
WD.CheckupPoint,
WD.AdjustPoint,
WD.FactPoint,
 WE.IsSpecial,
 WK.WorkType,
 WK.WorkStatus 
  FROM `Work` WK  LEFT JOIN WorkDesign WD ON WK.WorkID=WD.Work_id
LEFT JOIN WorkEditionDot WE ON WE.EditionDotID=WE.EditionDotID WHERE `WK`.WorkID IN
(SELECT `W`.WorkID   FROM `Work` W WHERE  W.PpjID=18035 AND (`W`.WorkStatus='已出稿' OR `W`.WorkStatus='已定稿')))   
 SET  WD.CheckupPoint=WD.AdjustPoint+WD.FactPoint WHERE  WK.PpjID=18035报错;Every derived table must have its own alias该如何解决(别名问题)?

解决方案 »

  1.   

    派生表不能修改的,mysql难道可以?
      

  2.   

    try:
    update a SET  CheckupPoint=a.AdjustPoint+a.FactPoint
    from WorkDesign a right join Wrok b on a.Work_id=b.WorkId
    WHERE b.PpjID=18035 and (b.WorkStatus='已出稿' OR b.WorkStatus='已定稿')
      

  3.   

    派生表mssql不可以修改
    mysql就不知道了
      

  4.   


    --try
    update
     a,b 
    SET
      CheckupPoint=a.AdjustPoint+a.FactPoint
    from
      WorkDesign a right join Wrok b on a.Work_id=b.WorkId
    WHERE
      b.PpjID=18035 and (b.WorkStatus='已出稿' OR b.WorkStatus='已定稿')
      

  5.   

    update
     WorkDesign a right join Wrok b on a.Work_id=b.WorkId
    SET
      CheckupPoint=a.AdjustPoint+a.FactPoint
    WHERE
      b.PpjID=18035 and (b.WorkStatus='已出稿' OR b.WorkStatus='已定稿')
      

  6.   

    update 复合表 内容 一直没搞懂过~
      

  7.   

    不理解为什么要更新,得到结果用case when 判断一下貌似就ok了?
      

  8.   

    UPDATE 
    (
    SELECT  WorkID,
    WK.PpjID,
    WD.CheckupPoint,
    WD.AdjustPoint,
    WD.FactPoint,
     WE.IsSpecial,
     WK.WorkType,
     WK.WorkStatus 
      FROM `Work` WK  LEFT JOIN WorkDesign WD ON WK.WorkID=WD.Work_id
    LEFT JOIN WorkEditionDot WE ON WE.EditionDotID=WE.EditionDotID WHERE `WK`.WorkID IN
    (SELECT `W`.WorkID   FROM `Work` W WHERE  W.PpjID=18035 AND (`W`.WorkStatus='已出稿' OR `W`.WorkStatus='已定稿')))   t
     SET  CheckupPoint=AdjustPoint+FactPoint WHERE  PpjID=18035