2014-03-30 170 views
0

對於我的生活,我無法弄清楚爲什麼這個MySQL代碼不起作用。MySQL如果其他語句錯誤

其目的是檢查證書,如果它們存在,返回ID,如果它們不然後插入它們並返回ID;

SET @Found = 0; 

SELECT Id INTO @Found FROM Users WHERE Users.Username = "testAccount" AND Users.Email = "[email protected]"; 

IF @Found > 0 THEN 
    SELECT @Found; 
ELSE 
    INSERT INTO Users VALUES (DEFAULT, "testAccount", "[email protected]"); 
    SELECT LAST_INSERT_ID(); 
END IF; 

謝謝你的幫助。

+0

'選擇ID INTO',而不是'選擇ID INFO' –

+0

對不起,是問問題的時候只是一個錯字,是沒有問題的 - 我還是謝謝你! – SkelDave

+0

而錯誤是....? –

回答

0

MySQL if聲明僅適用於存儲程序 - 存儲過程,函數和觸發器。

這正是documentation的第一行意思是:

IF語句存儲的程序來實現一個基本的條件構造。

因此,您的語句在語法上無效。

此外,你有一個語法錯誤在你select

SELECT Id INFO @Found 
FROM Users 
WHERE Users.Username = "testAccount" AND Users.Email = "[email protected]"; 

知道,被選擇?如果你有逗號?還是你的意思是:

SELECT @Found := id 
. . . 
+0

感謝您的回覆,我會看看程序。也是第一個選擇工作,並返回0,如果我選擇[at]後來發現,所以我認爲該部分的語法是正確的。 – SkelDave

+0

@SkelDave。 。 。是的,'into'對'select'和':='都適用,但我通常會使用':='。 –