gpt4 book ai didi

mysql - 存储过程计数麻烦

转载 作者:行者123 更新时间:2023-11-29 00:41:14 25 4
gpt4 key购买 nike

我有一个表 [users],我希望计算 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 //

最佳答案

要更新此字段,您可以使用这样的查询 -

UPDATE
total t
JOIN (SELECT Movie_ID, COUNT(*) cnt FROM users GROUP BY Movie_ID) m
ON t.Movie_ID = m.Movie_ID
SET
t.Player_Count = cnt

但是:您真的需要一个total 表吗?您始终可以使用 SELECT 查询获取此信息; total 表中的信息可能已过时。

关于mysql - 存储过程计数麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12169209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com