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该如何解决(别名问题)?
(
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该如何解决(别名问题)?
解决方案 »
- 用php如何实现禁止某段ip访问
- 请问作过php生成excel的朋友一个问题,关于数值型数据的
- 谁有json的C#实现代码,实现下面的php代码里的功能就可以,附PHP的Json实现代码,支持Json的顶一下!(
- 用PHP如何从数据库检索某字段的数据?
- 还是session,我实在想不到什么问题
- php有动态数组吗?
- 有类可以把excel导入mysql吗?
- 如何删除空间里的数据库表
- 刚刚看到一篇文章,大家看看,突然间想起前几天有个问奇数和的人的问题,他是不是醉翁之意~~大家看看~
- PHP读写文件的小小问题
- php发送邮件怎样才能自定义发件人名称请老师指教
- php发送邮件怎样才能修改发件人名称请老师指教
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$$贴出代码参考下,不知道对不对
-- 特版
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 这里的条件判断大家是否有更好的优化方法呢?
每一个派生表必须有自己的别名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
红色的部分就是一个派生表,需要有别名
被修改的是查询结果,你这样能修改成功吗?