我有一個表[用戶],我希望計算Movie_ID的每個出現次數,並更新另一個名爲[total]的表中的記錄。因此,對於Movie_ID = 81212,它會將值2發送到我的[total]表。存儲過程計數問題
象下面這樣:
------------------------------------
| [users] | [total]
+---------+---------+ +---------+-------------+
|Movie_ID |Player_ID| |Movie_ID | Player_Count|
+---------+---------+ +---------+-------------+
|81212 |P3912 | | 81212 | 2 |
+---------+---------+ +---------+-------------+
|12821 |P4851 | | 12821 | 1 |
+---------+---------+ +---------+-------------+
|81212 |P5121 |
+---------+---------+
(movie_ID + player_ID form composite key
so Movie_ID does not need to be unique)
所以我想用一個存儲過程來做到這一點,這是我迄今爲止:我不知道如何將部分代碼而循環遍歷[users]表中的每個條目,以查找每個movie_id的發生並對其進行總結。
DELIMITER //
CREATE PROCEDURE `movie_total` (OUT movie_count int(5))
LANGUAGE SQL
MODIFIES SQL DATA
BEGIN
DECLARE movie_count int(5);
SELECT count(movie_id) AS movie_count FROM users
foreach unique row in Users ;
IF (SELECT COUNT(*) FROM users WHERE movie_id) > 0
THEN
INSERT INTO total (:movie_id, :Player_Count) VALUES (movie_id, movie_count);
END //
那麼我打算在每次更新用戶表時運行該過程。 – Undermine2k
在這種情況下,您可以使用觸發器。 – Devart