gpt4 book ai didi

mysql - 如何根据其他列值保留一列的值?

转载 作者:行者123 更新时间:2023-11-29 15:43:36 26 4
gpt4 key购买 nike

我有一个要求,其中我将获取需要插入到数据库 (MariaDB 10.3) 表中的记录,其中对于每条记录我有 2 个基值,即。 nameamount 以及一个处理后的值即。 action(想象一下这个action是用户从UI执行的操作)。

+---------+--------+----------------+----------------+
| name | amount | action | created_at |
+---------+--------+----------------+----------------+
| Akshay | 1000 | processed | 2019-08-01 |
+---------+--------+----------------+----------------+

现在,我想要实现的是,当我下次收到表中已存在的 nameamount 记录时,然后填充 action 通过自动引用同一表中 nameamount 匹配的上一个条目。

如果表中不存在nameamount组合,则不填充action

期望的最终结果如下结构所示:

+---------+--------+----------------+----------------+
| name | amount | action | created_at |
+---------+--------+----------------+----------------+
| Akshay | 1000 | processed | 2019-08-04 |
| Akshay | 1001 | | 2019-08-03 |
| Saanvi | 1000 | | 2019-08-02 |
| Akshay | 1000 | processed | 2019-08-01 |
+---------+--------+----------------+----------------+

有什么线索可以帮助我实现此功能吗?

最佳答案

DROP PROCEDURE IF EXISTS db.SP_CREATE_VALUE;
CREATE PROCEDURE db.`SP_CREATE_VALUE`(IN `in_name` VARCHAR(50), IN `in_amount` INT)
BEGIN
DECLARE numAlreadyExists INT(11) DEFAULT 0;
DECLARE strExistingAction VARCHAR(20) DEFAULT "";

SET numAlreadyExists=(SELECT COUNT(*) FROM table_name WHERE name=in_name AND in_amount=in_amount);
IF (numAlreadyExists >0) THEN
SET strExistingAction=(SELECT action FROM table_name WHERE name=in_name AND in_amount=in_amount ORDER BY table_id DESC LIMIT 1);
END IF;
INSERT INTO table_name
name=in_name,amount=in_amount,action=strExistingAction;
END;

然后当您想创建新记录时,只需...

CALL SP_CREATE_VALUE('Akshay',1000);

关于mysql - 如何根据其他列值保留一列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57319354/

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