我在Marian引擎下运行数据库,我有两个表:
Users(id, score)
Replies(user ID, reply)
现在我必须编写一个存储过程,给定一个数字X,对于已回复X的所有用户,将字段得分增加1。
我该怎么做?我尝试进行更新查询,但MariaDB似乎不能使用from子句。
提前致谢
答案 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 ;