gpt4 book ai didi

mysql - 只有 else 条件是在插入或更新期间使用存储过程在 mysql 中执行

转载 作者:行者123 更新时间:2023-11-29 10:07:35 24 4
gpt4 key购买 nike

这是我的表架构
MariaDB [a1]> 显示创建表 bad_numbers_final;
+--------------------+---------------------------------------- --------------
|表|创建表
+--------------------+---------------------------------------- --------------
| bad_numbers_final | 坏数最终创建表 bad_numbers_final (
id int(11) NOT NULL AUTO_INCRMENT,
电话 varchar(255) NOT NULL,
phone_count varchar(255) 默认为 NULL,
主键(身份证、电话)
) 引擎=InnoDB AUTO_INCRMENT=126956 默认字符集=latin1 |
+--------------------+---------------------------------------- --------------
现在我想插入一个phone,如果表中存在相同的号码,那么它只需增加phone_count,否则在表中添加一个新行。因此,我使用存储过程并在其中写入BEGIN IF ('phone'='10083121224') THEN UPDATE bad_numbers_final SETphone_count=phone_count+10 WHERE 'phone'='10083121224' ;
ELSE INSERT INTO bad_numbers_final (phone,phone_count) VALUES ('10083121224',10);END IF;END
但是,当我执行此过程时,它总是在表中插入一个新行来代替增加 phone_count ,因为我插入该值的 phone 值已经在表,因此只需增加 phone_count 但它没有这样做。请提出任何建议。提前致谢。

最佳答案

  1. 'phone'='10083121224'中,您正在比较两个不同的字符串。您应该比较phone='10083121224'。
  2. 此外,phone_count 是一个 varchar(255)。不,它应该是一个数字(int或其他)它作为 varchar 没有意义。您可以通过这种方式将“10”连接为字符串。因此,如果之前有“0”,之后就会有“010”,然后是“01010”,依此类推。

然后你可以这样做:

UPDATE bad_numbers_final SET phone_count= phone_count+10 WHERE phone='10083121224' ;

我的猜测是您需要为该过程放置一个参数,而不是“10083121224”。也许您也想将电话数据类型更改为数字

关于mysql - 只有 else 条件是在插入或更新期间使用存储过程在 mysql 中执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51590663/

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