Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL IF语句不工作-无法识别的语句_Sql_Database_Mariadb - Fatal编程技术网

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

SQL IF语句不工作-无法识别的语句,sql,database,mariadb,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 UPD

我正试图建立一个记录搜索词的数据库。对于输入的每个搜索项,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的“如果”附近)

1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以获取第1行“”附近要使用的正确语法


我仔细检查了语法,在我看来它是正确的,IF语句在SQL控制台中也以红色突出显示,但似乎是唯一正确的。有人能告诉我哪里出了问题吗?

对于MariaDB,
IF
IF()
有不同的语义。当您实际使用
IF()

时,似乎想要使用
IF
IF
语句必须位于存储的例程中。如果没有,它就无法发挥作用


如果它在SP中,请提供例程声明,包括
分隔符
语句。

您错过了
检查it策略粘贴代码时出错,我已对其进行了更新,错误保持不变。在我看来,这更像是T-SQL(MS SQL Server)语法。检查文档中是否有语法?是否正在尝试编写存储过程?列“id”是否为标识列?如果是,则无法在标识列中插入任何内容,因为这是系统生成的密钥。