2016年9月15日 星期四

update multiple records at one time!

今天發生一個需求:
我有兩個 table:  members, orders
orders裡面有多筆 members 的訂單紀錄
如今,我想要統計 每一個members,分別各自合計下了總訂單金額。
如何做?

如果只是查詢,那簡單:

SELECT mem_id, sum(orders_total) FROM  orders GROUP BY mem_id;

這樣就出來的。以 mem_id 為群組,分別總計他們的 sum()

........

現在,我希望將此資料 update 到 members 裡面的一個欄位 all_orders_total, how to do?

經過測試,這樣就好了:

UPDATE members m, (SELECT mem_id, sum(orders_total) as tot FROM orders GROUP BY mem_id) b
SET  m.all_orders_total = b.tot
WHERE  m.mem_id = b.mem_id;

就這樣,解決了!

沒有留言:

張貼留言

如何判斷現在FORM是在 insert mode? 還是 update mode?

只要用  if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。