查询错误INSERT(如果不存在)

时间:2015-01-09 10:25:58

标签: mysql

嗨,这可能是一个简单的问题。 但在尝试了多次放弃之后。

无法查看此查询的错误:

IF NOT EXISTS(SELECT email FROM gebr_tickets WHERE email ='test@test.nl' ) 
INSERT INTO gebr_tickets (name,gebr_name, password, email, RelatieID) 
VALUES ('k','k','cmmNkftA','test@test.nl',170)

错误是:

  

[Err] 1064 - 您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以便在#< if NOT EXISTS附近使用正确的语法(SELECT email FROM gebr_tickets WHERE email =' test@test.nl')INSERT INTO'

3 个答案:

答案 0 :(得分:1)

您可以尝试以下代码来忽略重复记录

INSERT IGNORE INTO gebr_tickets (name,gebr_name, password, email, RelatieID) 
VALUES ('k','k','cmmNkftA','test@test.nl',170);

答案 1 :(得分:0)

最简单的方法是

INSERT INTO gebr_tickets (NAME,gebr_name, PASSWORD, email, RelatieID) 
SELECT 'k','k','cmmNkftA','test@test.nl',170 FROM DUAL 
WHERE NOT EXISTS (SELECT email FROM gebr_tickets WHERE email ='test@test.nl' )

这是另一种方式。

DELIMITER $$
CREATE PROCEDURE `sp_insert` ()
BEGIN
IF NOT EXISTS (SELECT email FROM gebr_tickets WHERE email ='test@test.nl' )
THEN


INSERT INTO gebr_tickets (name,gebr_name, password, email, RelatieID) 
VALUES ('k','k','cmmNkftA','test@test.nl',170);


END IF;

END$$
DELIMITER ; 

CALL sp_insert(); 

DROP PROCEDURE IF EXISTS `sp_insert`;

答案 2 :(得分:0)

您不能在过程/函数/触发器之外使用IF之类的控制语句。你需要一个外壳。