我有兩個表DailyVisits
和TotalSum
我的目標是將DailyVisits
添加到TotalSum
,並帶有存儲過程/查詢,我將在一天結束時運行。SQL - 使用其他表的結果插入或更新
DailyVisits
UserId,PageId,Visits
1,1,32
2,123,34
4,12,213
5,1,1
TotalSum
UserId,PageId,TotalVisits
1,1,300
1,41,2
3,12,213
5,1,653
等等。
我嘗試了兩種方法,但我無法解決問題。
爲了達到這個目的,在我的查詢下面,如果您有另一個足夠簡單易懂的建議/查詢,我感謝您的幫助。
Approach1:
delimiter $$
CREATE PROCEDURE UPSERT_DAILYSUM()
BEGIN
IF EXISTS (SELECT Id, PageId FROM DailyVisits) THEN
UPDATE TotalSum TotalVisits = TotalVisits + (SELECT Visits FROM DailyVisits);
ELSE INSERT INTO TotalSum (UserId,PageId,TotalVisits)
VALUES (SELECT Id,PageId,Visits);
END IF
END $$
delimiter ;
Approach2:
INSERT INTO TotalSum (UserId,PageId,TotalVisits) VALUES(SELECT * FROM DailyVisits)
ON DUPLICATE KEY UPDATE (PageId,TotalVisits)
VALUES(SELECT PageId,Visits FROM DailyVisits)
這就是我與掙扎:我將如何得到不同的值時,關鍵不存在?我可以使用RIGHT JOIN
(或LEFT JOIN
)並檢查NULL
值,然後添加右(或左)表嗎?
這是否幫助? http://stackoverflow.com/questions/11883237/insert-or-update-table-from-another-table-with-composite-primary-key – 2016-08-12 04:53:05
哦,是的,它確實!我從來沒有想過要兩次更新並分別插入。謝謝! –
如果我的回答幫助你,請給我一個upvote – 2016-08-12 05:41:49