首页 > 解决方案 > 如何检查数据库中是否存在字符串以及在真假的情况下执行SQL命令

问题描述

我需要一些帮助。

我想检查列包含SIMPLE_TABLE的字符串,并在真实情况下执行此命令:usernameBen

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

我怎样才能做到这一点?提前致谢。

标签: mysqlsqlmariadb

解决方案


使用唯一索引和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.


推荐阅读