SQL查询错误 - 如果是其他语句

时间:2014-07-09 10:04:46

标签: mysql sql select

以下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行"

我确定语法正确吗?!

2 个答案:

答案 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'