Задать вопрос
@T3R3AND

Как правильно составить sql запрос?

Здравствуйте!
BEGIN
	IF EXISTS( SELECT * FROM `table1` WHERE `id` = 1 AND `chat` = 12 LIMIT 1 ) THEN
		UPDATE `table1` SET `q` = `q` + 1 WHERE `id` = 1 AND `chat` = 12 LIMIT 1
	ELSE
    		INSERT INTO `table1` ( `id`, `chat`, `q` ) VALUES ( 1, 12, 1 )
	END IF;
END

Ошибка следующая:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'IF EXISTS( SELECT * FROM `table1` WHERE `id` = 1 AND `chat` = 12' at line 2
  • Вопрос задан
  • 122 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
rozhnev
@rozhnev Куратор тега MySQL
Fullstack programmer, DBA, медленно, дорого
Вам следует создать уникальный индекс на полях `id`, `chat`:
CREATE TABLE `table1` (
  `id` int,
  `chat` int,
  `q` int,
  PRIMARY KEY (`id`, `chat`)
);


а затем использовать следующий запрос:

INSERT INTO `table1` ( `id`, `chat`, `q` ) 
VALUES ( 1, 12, 1 ) 
ON DUPLICATE KEY UPDATE `q` = `q` + 1;


Проверить на MySQL fiddle
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы