我正在尝试设置一个记录搜索字词的数据库。对于输入的每个搜索词,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控制台中也突出显示为红色,但似乎是唯一的。谁能告诉我哪里出错了?
答案 0 :(得分:1)
使用MariaDB,IF
和IF()
具有不同的语义。您实际使用IF
时似乎想要使用IF()
。
答案 1 :(得分:1)
IF
语句必须位于Stored Routine中。如果不是,则无法使其发挥作用。
如果是SP,请提供例行声明,包括DELIMITER
声明。