MySQL if else 语句与多查询



我是MySQL的新手 我想在查询中使用 IF else 语句,即

IF (EXISTS (SELECT user_token 
FROM upvotes 
WHERE user_token ="user_token" AND comment_token = "comment_token"
)
) 
THEN (DELETE 
FROM upvotes 
WHERE user_token = 'user_token' AND comment_token = "comment_token"
) 
AND 
(UPDATE comments 
SET upvote = upvote +1 
WHERE token = "comment_token" 
) 
ELSE (INSERT INTO upvotes(user_token,comment_token 
VALUES('user_token','comment_token'
) 
AND 
(UPDATE comments 
SET upvote = upvote -1 
WHERE token = "comment_token"
) 
END IF

但是会发生此错误

Unrecognized statement type. (near "IF" at position 0) SQL query: Copy Documentation

你不能在普通的sql查询中这样做。您必须在函数或存储价格中执行此操作

DROP procedure IF EXISTS `new_procedure`;
DELIMITER $$
USE `testdb1`$$
CREATE PROCEDURE `new_procedure` ()
BEGIN
IF (EXISTS (SELECT user_token FROM upvotes WHERE user_token ="user_token" AND comment_token = "comment_token")) THEN 
DELETE FROM upvotes WHERE user_token = 'user_token' AND comment_token = "comment_token";
UPDATE comments SET upvote = upvote +1 WHERE token = "comment_token" ;
ELSE 
INSERT INTO upvotes(user_token,comment_token) VALUES('user_token','comment_token');
UPDATE comments SET upvote = upvote -1 WHERE token = "comment_token";
END IF;
END$$
DELIMITER ;

你会碰撞:

call new_procedure();

最新更新