影响MariaDB中多行的存储过程

时间:2018-04-18 05:50:18

标签: sql mariadb

我在Marian引擎下运行数据库,我有两个表:

Users(id, score)
Replies(user ID, reply)

现在我必须编写一个存储过程,给定一个数字X,对于已回复X的所有用户,将字段得分增加1。

我该怎么做?我尝试进行更新查询,但MariaDB似乎不能使用from子句。

提前致谢

1 个答案:

答案 0 :(得分:1)

更新查询本身很简单:

UPDATE Users u
SET score = score + 1
WHERE EXISTS (SELECT 1 FROM Replies r WHERE r.userID = u.id AND reply = 'X');

在存储过程中,它可能如下所示:

DELIMITER //
CREATE PROCEDURE addScore (reply INT)
BEGIN
SET @query = 'UPDATE Users u
    SET score = score + 1
    WHERE EXISTS (SELECT 1 FROM Replies r WHERE r.userID = u.id AND reply = ?)'

SET @x = reply;
PREPARE stmt FROM @query;
EXECUTE stmt USING @x;
DEALLOCATE PREPARE stmt;
END; //
DELIMITER ;