SQL IF语句不起作用 - 无法识别的语句

时间:2016-12-15 17:41:56

标签: sql database mariadb

我正在尝试设置一个记录搜索字词的数据库。对于输入的每个搜索词,SQL检查搜索词是否存在,如果不存在则记录新记录,如果为true则更新现有字段

IF (NOT EXISTS (SELECT * FROM searchmetrics WHERE keyword = 'keyword'))
BEGIN
    INSERT INTO searchmetrics(id, name, metric)
    VALUES('', 'keyword', '1')
END
ELSE
BEGIN
    UPDATE searchmetrics
    SET metrics = metrics + 1
    WHERE name = 'keyword'
END

我收到了以下错误:

  

无法识别的声明类型。 (位置0附近的“IF”)

     

1064 - 您的SQL语法出错;检查与您的MariaDB服务器版本对应的手册,以便在第1行的''附近使用正确的语法

我仔细检查了语法,看起来对我来说正确,IF语句在SQL控制台中也突出显示为红色,但似乎是唯一的。谁能告诉我哪里出错了?

2 个答案:

答案 0 :(得分:1)

使用MariaDB,IFIF()具有不同的语义。您实际使用IF时似乎想要使用IF()

答案 1 :(得分:1)

IF语句必须位于Stored Routine中。如果不是,则无法使其发挥作用。

如果是SP,请提供例行声明,包括DELIMITER声明。