Как проверить наличие строки в базе данных и в случаях истина и ложь для выполнения команд SQL - PullRequest
0 голосов
/ 20 сентября 2019

Мне нужна помощь.

Я хочу проверить 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

Как я могу это сделать?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

INSERT INTO TABLE_NAME (столбец1, столбец2) VALUES ('username', value_of_passd) ON DUPLICATE KEY UPDATE number = число + VALUES (число);

0 голосов
/ 20 сентября 2019

Используйте уникальный индекс и 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...