mysql - 关于确定mysql中一条记录的level id值(用户自定义字段["level_id"])

标签 mysql sql

有人可以帮我处理这段代码吗?我不知道如何准确地将 1 的值从第 5 条记录开始放在 level_id 字段中。它始终保持为 0,然后第 6 条记录从 1 开始。

    CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_EncodePerson`(
    in p_memberId varchar(45),
    in p_encodeId varchar(100))

    BEGIN

    DECLARE Lev0 varchar(5);
    DECLARE Lev1 varchar(5);

    SET Lev0 = "0";
    SET Lev1 = "1";

    SELECT @total := count(*) from gph_acquiredpeople 
    where member_Id = p_memberId;

IF @total <= 4 THEN 
    INSERT INTO gph_acquiredpeople
    (member_id,encoded_mem_Id,date_encoded,level_id)
    VALUES (p_memberId,p_encodeId,NOW(),Lev0);
    UPDATE gph_memberstatus SET available ="0", taken = "1"
    WHERE Id_number = p_encodeId;

ELSEIF @total = 5 OR @total >= 5 AND @total < 25 THEN
    INSERT INTO gph_acquiredpeople
    (member_id,encoded_mem_Id,date_encoded,level_id)
    VALUES (p_memberId,p_encodeId,NOW(),Lev1);
    UPDATE gph_memberstatus SET available ="0", taken = "1"
    WHERE Id_number = p_encodeId;        
ELSE
    BEGIN        
    END;
END IF;
END

最佳答案

如果我很好地理解您的问题,解决方案似乎很简单:

当您在插入记录之前进行 @total 计数检查时,您必须将 @total 与(要使用 Lev1 开始插入的记录编号)进行比较 - 1。使用当前检查,当 @total = 4 时,您继续使用 Lev0 插入,这将是您的...第五条记录。

所以会是:

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_EncodePerson`(
    in p_memberId varchar(45),
    in p_encodeId varchar(100))

    BEGIN

    DECLARE Lev0 varchar(5);
    DECLARE Lev1 varchar(5);

    SET Lev0 = "0";
    SET Lev1 = "1";

    SELECT @total := count(*) from gph_acquiredpeople 
    where member_Id = p_memberId;

IF @total < 4 THEN 
    INSERT INTO gph_acquiredpeople
    (member_id,encoded_mem_Id,date_encoded,level_id)
    VALUES (p_memberId,p_encodeId,NOW(),Lev0);
    UPDATE gph_memberstatus SET available ="0", taken = "1"
    WHERE Id_number = p_encodeId;

ELSEIF @total >= 4 AND @total < 25 THEN
    INSERT INTO gph_acquiredpeople
    (member_id,encoded_mem_Id,date_encoded,level_id)
    VALUES (p_memberId,p_encodeId,NOW(),Lev1);
    UPDATE gph_memberstatus SET available ="0", taken = "1"
    WHERE Id_number = p_encodeId;        
ELSE
    BEGIN        
    END;
END IF;
END

关于mysql - 关于确定mysql中一条记录的level id值(用户自定义字段["level_id"]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37477452/

相关文章:

php - 如何将表单中复选框的值保存到单个 MySQL 字段中?

MySQL Where 列包含在字符串中

sql - 在 SQL 中,我想显示所有以元音结尾的城市的名称

mysql - 在 mysql 中使用 where 子句时应该使用索引吗?

mysql - 错误 : Cannot add foreign key constraint

mysql - 轻量级多操作系统监控平台

sql - SQL中的各列

mysql - 在触发条件中插入 null 和字符串 'Null

java - 如何使用 Java(Fx) 从自定义 UI 面板创建/操作数据库和表?

MySQL 错误 2013