21,886
社区成员
发帖
与我相关
我的任务
分享
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该如何解决(别名问题)?SET WorkDesign.CheckupPoint = CASE
-- 特版
WHEN((WorkEditionDot.IsSpecial=0 AND Work.IsWorkMakeUp=1) AND ((Work.WorkType='修改')OR (Work.WorkType='新稿')
OR (Work.WorkType='改稿') OR (Work.WorkType='转稿') OR (Work.WorkType='重新设计'))) THEN
WorkDesign.FactPoint+WorkDesign.AdjustPoint
WHEN(Work.WorkType='修改'AND WorkEditionDot.IsSpecial=0 AND Work.IsWorkMakeUp=1) THEN
1+WorkDesign.AdjustPoint
-- 非特版
WHEN(Work.IsWorkMakeUp=0 AND (((Work.WorkType='修改'OR Work.WorkType='新稿') AND (WorkEditionDot.IsSpecial=1))
OR (Work.WorkType='改稿')OR (Work.WorkType='转稿') OR (Work.WorkType='重新设计'))) THEN
WorkDesign.AdjustPoint+WorkDesign.FactPoint/2
WHEN((Work.WorkType='新稿'OR Work.WorkType='修改')AND WorkEditionDot.IsSpecial=0 AND Work.IsWorkMakeUp=0) THEN
WorkDesign.AdjustPoint+WorkDesign.FactPoint
END
这里的条件判断大家是否有更好的优化方法呢?CREATE DEFINER=`fxzycrmdb`@`%` PROCEDURE `UPDATE_WorkPoint`(
M_PPJID INT(11) -- 书刊编号
)
BEGIN
UPDATE `Work` LEFT JOIN WorkDesign ON Work.WorkID=WorkDesign.Work_id LEFT JOIN
WorkEditionDot ON `Work`.EditionDotID=WorkEditionDot.EditionDotID
SET WorkDesign.CheckupPoint = CASE
-- 特版
WHEN((WorkEditionDot.IsSpecial=0 AND Work.IsWorkMakeUp=1) AND ((Work.WorkType='修改')OR (Work.WorkType='新稿')
OR (Work.WorkType='改稿') OR (Work.WorkType='转稿') OR (Work.WorkType='重新设计'))) THEN
WorkDesign.FactPoint+WorkDesign.AdjustPoint
WHEN(Work.WorkType='修改'AND WorkEditionDot.IsSpecial=0 AND Work.IsWorkMakeUp=1) THEN
1+WorkDesign.AdjustPoint
-- 非特版
WHEN(Work.IsWorkMakeUp=0 AND (((Work.WorkType='修改'OR Work.WorkType='新稿') AND (WorkEditionDot.IsSpecial=1))
OR (Work.WorkType='改稿')OR (Work.WorkType='转稿') OR (Work.WorkType='重新设计'))) THEN
WorkDesign.AdjustPoint+WorkDesign.FactPoint/2
WHEN((Work.WorkType='新稿'OR Work.WorkType='修改')AND WorkEditionDot.IsSpecial=0 AND Work.IsWorkMakeUp=0) THEN
WorkDesign.AdjustPoint+WorkDesign.FactPoint
END
WHERE `Work`.PpjID=M_PPJID AND WorkDesign.IsCancel=0 AND (`Work`.WorkStatus='已出稿' OR `Work`.WorkStatus='已定稿');
END$$
贴出代码参考下,不知道对不对