2011-08-18 55 views
1

我来自MSSQL,现在使用Mysql,这可能是一个简单的问题,但是如果不存在语句,您如何执行 。谢谢mysql如果不存在

IF NOT EXISTS(SELECT * from users WHERE Username = spUsername) 
    BEGIN 
    INSERT into users(ID,Username,Password,Email,Birthdate,DateJoin) 
      VALUES(UUID(),spUsername,spPassword,spEmail,spBirthDate,NOW()); 
    END 
+0

可能重复:http://stackoverflow.com/questions/1361340/how-to-insert-if-not-exists-in-mysql –

回答

4

我不是一个数据库专家,但这是我如何做到这一点。

http://www.somethinghitme.com/2010/05/06/mysql-stored-procedures-if-not-exists/

DECLARE SomeId int; 
    DECLARE CheckExists int; 
    SET CheckExists = 0; 

    SELECT 1 INTO CheckExists from lookup_table WHERE someField = in_SomeParam LIMIT 1; 

    IF (CheckExists > 0) THEN 
     SELECT id INTO SomeId FROM lookup_table WHERE someField = in_SomeParam; 
    ELSE 
     INSERT INTO lookup_table (someField) VALUES(in_SomeParam); 
     SELECT SomeId = LAST_INSERT_ID(); 
    END IF; 
+0

有一点要注意的是在select语句中被强制过滤的记录集不必要的计数。另一种方法是'SELECT 1 INTO CheckExists FROM lookup_table WHERE someField = in_SomeParam LIMIT 1;' –

+0

@Doug Kress,谢谢很多修正。非常好。 – Loktar