私は2つのテーブルを持っています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
などとなる。
私は2つのアプローチを試みましたが、私は解決策の中で頭を上げることができません。
これを達成するための私の質問の下に、あなたが理解するのに十分な別の提案/クエリがあれば、私はあなたの助けに感謝します。
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 –
ああ、そうです!私は2つの更新を行い、別々に挿入することを考えたことはありません。ありがとう! –
私の答えがあなたを助けた場合私にupvoteを与えてください –