结果变量是一种返回我所读过的null的简单方法。但是,以下方法不起作用。之前,我尝试IF NOT EXIST then '(SELECT min(classID) FROM Classes WHERE title LIKE CoName)'也无济于事。

问题代码:

Set result = (SELECT min(classID) FROM Classes WHERE title LIKE CoName);
IF result is null THEN
    INSERT INTO Classes (title)
    VALUES (CoName);
END IF;


这来自一个存储过程,用于从旧表填充新表。 if语句用于检查新值是否已添加到新表中。该过程的其余部分可以在没有if语句的情况下工作,但会提供重复的条目。

最佳答案

如果要忽略插入错误,请在CoName上创建唯一索引:

create unique index classes_coname on classes(coname);


然后在插入时忽略错误。以下内容将忽略所有错误:

INSERT IGNORE INTO Classes(title)
    VALUES (CoName);


以下是重复键错误的更具体说明:

INSERT IGNORE INTO Classes(title)
    VALUES (CoName)
    ON DUPLICATE KEY UPDATE title = CoName;

关于mysql - 检查IF IS NULL或IF NOT EXIST,导致SQL语法错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23531340/

10-09 03:17