[SQL ] 將統計結果UPDATE到另外一個資料表

看板Database作者 (LaPass)時間12年前 (2013/09/21 02:34), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
MYSQL 5.5.27 TABLE visit (使用者資料) v_id v_country 國家 (略) TABLE visitop (使用者活動紀錄) vo_id vo_vid (這是v_id) vo_sid (瀏覽的頁面id = cc_sid) vo_date (瀏覽的日期、時間) (略) TABLE count_country (統計的資料表) cc_id cc_sid cc_country cc_num (略) 就是,想要寫一段SQL 可以統計每個頁面(cc_sid)的國家(cc_country)的使用者數目 就是: SELECT vo_sid,v_country,COUNT(*) AS new_num FROM visitop,visit WHERE vo_vid=v_id AND vo_date >= 統計起始時間 AND vo_date < 現在 GROUP BY vo_sid,v_country 這樣 但是TABLE count_country的產生方式是交給排程去處理的 上一次的統計結果的時間,就是統計起始時間 也就是說,裡面可能已經有以前的資料 那我要怎麼判斷count_country裡面是否有 cc_sid=vo_sid AND cc_country=v_country 這一筆資料,來決定要INSERT 進去 或是 UPDATE cc_num = cc_num+new_num -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.41.101.10 解決了.... INSERT INTO count_country(cc_sid,cc_country,cc_num) SELECT vo_sid,v_country,@new_num:=COUNT(*) FROM visitop,visit WHERE vo_sid = 33 AND '2013-09-21 04:35:32' > v_date AND vo_date >='2013-09-01 04:00:00' AND vo_vid=v_id GROUP BY vo_sid,v_country ON DUPLICATE KEY UPDATE cc_num = cc_num + @new_num; 關鍵是把 vo_sid,v_country 設成 UNIQUE http://i.imgur.com/POK67e0.jpg
可以睡好覺了 = = ※ 編輯: LaPass 來自: 114.41.101.10 (09/21 04:43)
文章代碼(AID): #1IF9KhJ0 (Database)