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”附近使用的正确语法