gpt4 book ai didi

MySQL 5.5 基于IF语句的查询

转载 作者:行者123 更新时间:2023-11-29 06:57:46 24 4
gpt4 key购买 nike

我已经和这个问题斗争太久了,所以我来这里寻求帮助...

我有一个 MySQL 存储过程,我想执行以下操作:

给定记录的“id”和“用户名”

  1. 如果表中不存在id则创建记录
  2. 否则如果 id 存在且用户名与现有的不同则更新记录
  3. 否则什么都不做

我试过以下方法:

BEGIN

DECLARE doCreate INT;
DECLARE doUpdate INT;
SELECT COUNT(*) INTO doCreate FROM app_user WHERE id=1;
IF (doCreate > 0) THEN
SELECT COUNT(*) INTO doUpdate FROM app_user WHERE id=1 AND username='other';
END IF

IF(doCreate = 0) THEN ---SYNTAX ERROR ON THIS LINE---
SELECT 'CREATE';
ELSE IF(doUpdate = 0) THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END IF

END

我也尝试用 case 语句替换 if-elseif-else block ,但得到相同的结果...

CASE ---ERROR ON THIS LINE---
WHEN doCreate = 0 THEN
SELECT 'CREATE';
WHEN doUpdate = 0 THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END
  • 我似乎对第一个 END IF 之后的任何内容都有语法错误,所以这是出现的第一个问题...

如有任何帮助,我们将不胜感激 - 我相信有更好的方法可以做到这一点。

最佳答案

我相信您需要用 ; 终止 END IF,并且在内部 ELSEIF 应该是一个词。否则,需要另一个 END IF,但找不到。

IF (doCreate > 0) THEN 
SELECT COUNT(*) INTO doUpdate FROM app_user WHERE id=1 AND username='other';
END IF; /* terminate with ; */

IF(doCreate = 0) THEN
SELECT 'CREATE';
ELSEIF(doUpdate = 0) THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END IF; /* terminate with ; */

查看MySQL IF/ELSE syntax reference各种使用示例。

关于MySQL 5.5 基于IF语句的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11703873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com