2012-10-19 104 views
1

我已經搜索並發現了許多類似於我的問題,但沒有一個解決方案適用於我。這是在Oracle中,我不知道版本(我只能通過SQL Developer訪問它)。我有兩個表(略無關列):使用select result in update oracle

describe t_points_receipt 
Name    Null  Type   
----------------- -------- ------------- 
USER_ID   NOT NULL NUMBER(9)  
PROMOTION_ID  NOT NULL NUMBER(9)  
AMOUNT   NOT NULL NUMBER(9,2) 

describe t_user_promotion_points 
Name   Null  Type   
------------ -------- ----------- 
USER_ID  NOT NULL NUMBER(9) 
PROMOTION_ID NOT NULL NUMBER(9) 
TOTAL_POINTS   NUMBER(9,2) 

而且,我有這個疑問:

select user_id, promotion_id, sum(amount) from t_points_receipt 
where promotion_id = 10340 group by user_id, promotion_id; 

我想這樣做是與結果,其中t_user_promotion_points總和(金額)更新t_user_promotion_points .user_id =(結果).user_id和t_user_promotion_points.promotion_id =(結果).promotion_id。有沒有辦法做到這一點?

回答

1

您可以創建相關子查詢的值設置:

update t_user_promotion_points p 
set total_points = (select sum(amount) from t_points_receipt r where p.user_id = r.user_id and p.promotion_id = r.promotion_id) 
where p.promotion_id = 10340; 
+0

工作正常!非常感謝。 – user1547208

2
update t_user_promotion_points p 
set total_points = select sum(amount) from t_points_receipt r 
on p.user_id = r.user_id 
where r.promotion_id = 10340 and 
where t.promotion_id = 10340 
+0

按秒:) – RThomas

+0

感謝您的快速反應打我!但是,我得到這個錯誤: ' 錯誤在命令開始位於第1行: 更新t_user_promotion_points p 組total_points = SELECT SUM(量)從t_points_receiptř 上p.user_id = r.user_id 其中r.promotion_id = 10340和 其中t.promotion_id = 10340 錯誤在命令行:2列:19 錯誤報告: SQL錯誤:ORA-00936:缺少表達 00936. 00000 - 「失蹤表達」 *原因: *行動:」 – user1547208

+0

對上面的格式感到抱歉,我試着修復它,但它超時了我。 – user1547208