#mysql
#mysql
Вопрос:
Я хочу иметь возможность сделать что-то вроде этого:
IF EXISTS (SELECT * FROM table WHERE col=val)
INSERT ......
ELSE
UPDATE ......
Я знаю, что вы можете это сделать:
IF EXISTS (SELECT * FROM table WHERE col=val)
INSERT ......
Но я не уверен, что вы можете сделать что-то еще вместе с этим.
Какой самый быстрый способ выполнить первый запрос?
Ответ №1:
Да, это возможно. Один из способов сделать это — использовать процедуру.
DELIMITER $$
DROP PROCEDURE IF EXISTS `YOUR-PROCEDURE`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `YOUR-PROCEDURE`()
BEGIN
IF EXISTS (SELECT * FROM table WHERE col=val)
THEN
BEGIN
UPDATE table SET ..;
END;
ELSE
BEGIN
INSERT INTO table ..;
END;
END IF;
END$$
DELIMITER ;
Ответ №2:
Вам лучше использовать INSERT ... ON DUPLICATE KEY UPDATE
insert into table1 (col1,col2) values(1,2)
on duplicate key update col2=3, col1=4
Смотрите Здесь для получения дополнительной информации.