是否可以使用两个条件的IF EXISTS查询来执行MySQL

时间:2014-06-25 20:47:06

标签: mysql

我希望能够做到这样的事情:

IF EXISTS (SELECT * FROM table WHERE col=val)
    INSERT ......
ELSE
    UPDATE ......

我知道你能做到这一点:

IF EXISTS (SELECT * FROM table WHERE col=val)
    INSERT ......

但是我不确定你是否可以做其他事情。

第一次查询的最快方法是什么?

2 个答案:

答案 0 :(得分: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 ;  

答案 1 :(得分:0)

您应该使用INSERT ... ON DUPLICATE KEY UPDATE

insert into table1 (col1,col2) values(1,2) 
on duplicate key update col2=3, col1=4

有关详细信息,请参阅Here