Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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
Mysql 如果。。。然后声明_Mysql - Fatal编程技术网

Mysql 如果。。。然后声明

Mysql 如果。。。然后声明,mysql,Mysql,我无法执行如下查询:我不知道为什么: IF(NOT EXISTS(SELECT accountId FROM test_account WHERE content = '123')) THEN INSERT INTO test_account (content) VALUES ('123'); END IF; SELECT accountId FROM test_account WHERE content = '123' LIMIT 1; 收到错误: #1064 - You have

我无法执行如下查询:我不知道为什么:

IF(NOT EXISTS(SELECT accountId FROM test_account WHERE content = '123')) THEN
    INSERT INTO test_account (content) VALUES ('123');
END IF;
SELECT accountId FROM test_account WHERE content = '123' LIMIT 1;
收到错误:

 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF(NOT EXISTS(SELECT accountId FROM test_account WHERE content = '123')) THEN INSE' at line 1 
编辑:

我尝试先编写过程:

CREATE FUNCTION getTestAccount(var_c VARCHAR(20)) RETURNS INT
BEGIN
IF NOT EXISTS(SELECT accountId FROM test_account WHERE content = var_c)
THEN
    INSERT INTO test_account (content) VALUES (var_c);
END IF;
RETURN (SELECT accountId FROM test_account WHERE content = var_c LIMIT 1);
END;
我尝试了
,然后
,没有

甚至不能查询简单的东西:

CREATE FUNCTION getVar(var INT) RETURNS INT
BEGIN
RETURN var;
END;

不清楚您正在使用的代码的上下文。。但您也可以尝试以这种方式插入选择

    INSERT INTO test_account (content) 
    SELECT '123' 
    FROM test_account 
    WHERE content = '123' 
    AND   NOT EXISTS(SELECT accountId 
              FROM test_account WHERE content = '123') 
    LIMIT 1;

你的函数代码看起来不错。我想知道您是否在进入函数之前忘记设置分隔符,以防止MySQL被
混淆s,即

DELIMITER //
CREATE FUNCTION getTestAccount(var_c VARCHAR(20)) RETURNS INT
BEGIN
    IF NOT EXISTS(SELECT accountId FROM test_account WHERE content = var_c) THEN
        INSERT INTO test_account (content) VALUES (var_c);
    END IF;
    RETURN (SELECT accountId FROM test_account WHERE content = var_c LIMIT 1);
END //
DELIMITER ;

细线程的可能复制似乎解决了一个类似于您的问题:您的函数代码看起来很好。您是否记得在
创建函数
之前使用了
分隔符/
(或
$$
,或
以外的东西)?否则MySQL会被
弄糊涂在函数定义中。@Nick我不知道如何使用它。如果你能提供一个显示用法的答案,那就太好了。@atd_motum我已经按要求给出了答案。你能试试看并给出一些反馈吗?谢谢。如果内容不存在,我想创建一个帐户,并返回accountId
#1064-你的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解第8行“DELIMITER”附近使用的正确语法