日期:2014-05-17  浏览次数:20515 次

对select 结果直接update 的问题
请各位大侠,帮小弟解决一下这个问题呗。我刚开始学数据库,完全属于菜鸟水平
 大概的问题是这样的,根据下面 where条件,将查询到的结果 跟TEST表中一样的数据进行 sum,
代码如下:

UPDATE TEST E
SET E.REQUEST_QTY += A.REQUEST_QTY,
E.REQUEST_AMT += A.REQUEST_AMT
FROM PU02121 A
LEFT JOIN
SA01110 B ON A.CLIENT_CODE = B.CLIENT_CODE
LEFT JOIN
ITEM_V C ON A.ITEM_CODE = C.ITEM_CODE
INNER JOIN
PU02120 D ON A.REQUEST_NO = D.REQUEST_NO
WHERE D.REQUEST_DATE BETWEEN '20120901' AND '20120930'
AND D.FACILITY = '1'
AND A.REQUEST_NO = E.REQUEST_NO AND A.REQUEST_SEQ = E.REQUEST_SEQ

(上面用到的join 是因为还有其他变量需要加入到TEXT表中,除了上面那两项以外其他全部可以为空。 我只是为了让程序简便,才省略了其他的项)

系统老提示我 E 附近有语法错误,希望各位大侠帮我解决,小弟不胜感激啊!

------解决方案--------------------
改成这样试试:
SQL code

UPDATE E
SET     E.REQUEST_QTY += A.REQUEST_QTY,
E.REQUEST_AMT += A.REQUEST_AMT
FROM TEST E
INNER JOIN PU02121 A
ON E.字段=A.字段        
--你的问题在于语法错误,这种修改方式,必须在这里先将TEST表和后面的表进行联接,我这里暂时修改成和PU02121表联接。
LEFT JOIN
SA01110    B ON A.CLIENT_CODE = B.CLIENT_CODE
LEFT JOIN
ITEM_V C ON A.ITEM_CODE = C.ITEM_CODE
INNER JOIN
PU02120 D ON A.REQUEST_NO = D.REQUEST_NO
WHERE    D.REQUEST_DATE BETWEEN '20120901' AND '20120930'
AND     D.FACILITY = '1'
AND     A.REQUEST_NO = E.REQUEST_NO AND    A.REQUEST_SEQ = E.REQUEST_SEQ