2011-08-18 56 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