我是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();