mysql - 如何检查数据库中是否存在字符串以及在真假的情况下执行SQL命令
问题描述
我需要一些帮助。
我想检查列包含SIMPLE_TABLE
的字符串,并在真实情况下执行此命令:username
Ben
UPDATE `SIMPLE_TABLE` SET `number` = `number` + 3 WHERE username LIKE "Ben"
在假(如果字符串不存在)的情况下,我想执行其他命令:
INSERT INTO `SIMPLE_TABLE` (username, number) VALUES ('Ben', '3');
我试图以这种方式做到这一点,但它没有奏效:
SELECT * FROM SIMPLE_TABLE
WHERE username='Ben';
BEGIN
UPDATE `SIMPLE_TABLE` SET `number` = `number` + 3 WHERE username LIKE "Ben"
END
ELSE
BEGIN
INSERT INTO SIMPLE_TABLE (username, number) VALUES ('Ben', '3')
END
我怎样才能做到这一点?提前致谢。
解决方案
使用唯一索引和on duplicate key update
:
INSERT INTO `SIMPLE_TABLE` (username, number)
VALUES ('Ben', 3)
ON DUPLICATE KEY UPDATE number = number + VALUES(number);
为此,您需要一个唯一索引username
:
CREATE UNIQUE INDEX unq_simple_table_username ON SIMPLE_TABLE(username);
如果username
声明为主键,它也将起作用。
注意: number
是——大概——一个数字。保持类型一致,这就是为什么我删除了3
.
推荐阅读
- javascript - React JS - 渲染后缺少分号
- android - 如何让自定义视图同时调用它的 touchEvent 和它的父视图?
- tailwind-css - 我正在尝试使用跨度“绘制”一个圆圈,有时可以,有时不能
- python - 将最大值标签添加到散点图
- python - 熊猫如果一列中存在值,则填充不同列中的值
- ruby-on-rails - 是否可以从模型动作中获取变量到控制器?
- node.js - ffmpeg --help, node child_process spawn trigger stderr
- python - 计算只包含一次给定单词的固定长度字符串的数量
- visual-studio-code - 使用 cl.exe 构建未完成运行
- spring-boot - IO 错误:仅当数据库使用 IN 语句运行 JDBCTemplate 查询时,套接字读取才会超时