以下SQl查询给出了错误:
IF EXISTS (SELECT * FROM comments WHERE user_id='2' AND course_id='1')
UPDATE comments SET page1='exists' WHERE user_id='2' AND course_id='1'
ELSE
INSERT INTO comments (user_id,course_id,page1) VALUES ('2','1','inserted')
" #1064 - 您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册,以便在' IF EXISTS附近使用正确的语法(SELECT * FROM comments WHERE user_id =' 2' AND course_id =' 1' )更新co'在第1行"
我确定语法正确吗?!
答案 0 :(得分:2)
添加一个覆盖user_id和course_id
的唯一键然后使用
INSERT INTO comments (user_id,course_id,page1)
VALUES ('2','1','inserted')
ON DUPLICATE KEY UPDATE page1='exists'
答案 1 :(得分:1)
检查此IF-statement语法:
试试这个:
IF EXISTS (SELECT * FROM comments WHERE user_id='2' AND course_id='1') THEN
UPDATE comments SET page1='exists' WHERE user_id='2' AND course_id='1';
ELSE
INSERT INTO comments (user_id,course_id,page1) VALUES ('2','1','inserted');
或
按照我的说法,你必须练习 BEGIN ... END 块,如下所示。
IF EXISTS (SELECT * FROM comments WHERE user_id='2' AND course_id='1') THEN
BEGIN
UPDATE comments SET page1='exists' WHERE user_id='2' AND course_id='1';
END
ELSE
BEGIN
INSERT INTO comments (user_id,course_id,page1) VALUES ('2','1','inserted');
END
我的上述查询将在Procedures(PL-SQL)中运行。如果要在SQL中使用上述查询 然后使用下面的代码:
在user_id & course_id
列上创建UNIQUE约束(如果尚不存在):
ALTER TABLE comments ADD UNIQUE (user_id,course_id);
使用INSERT ... ON DUPLICATE KEY UPDATE:
INSERT INTO comments (user_id,course_id,page1)
VALUES ('2','1','inserted')
ON DUPLICATE KEY UPDATE page1='exists'