Можно ли выполнить MySQL с запросом IF EXISTS с двумя условиями

#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
  

Смотрите Здесь для получения дополнительной информации.