2016-03-07 138 views
1

我的初始插入語句工作正常,但我想發送一個自定義結果回我的應用程序。 這可能嗎? (請參見下面的最後一個SELECT語句):MySQL返回行如果插入成功,否則返回'失敗'

-- this is working  
INSERT INTO users (email, firstName, lastName, password) 

SELECT * FROM (
    SELECT '{{email}}' as email, 
    'test' as firstName, 
    'person' as lastName, 
    '{{password}}' as password) AS tmp 
WHERE NOT EXISTS (
    SELECT email FROM users WHERE email = '{{email}}' 
) LIMIT 1; 

-- this statement is not working. 
SELECT IF(ROW_COUNT() > 0, 
    SELECT * FROM users WHERE email = '{{email}}', 
    'failure' 
); 

運行這給了我:

錯誤的詳細信息:您在您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第2行的'SELECT * FROM users WHERE email ='[email protected]','failure')'附近使用正確的語法。

+0

我懷疑你可以嵌套的IF像內選擇。你是否真的希望結果在失敗的情況下是單一值,在非失敗的情況下是否需要整行?似乎這會使應用程序中的處理工作更加痛苦而不是更少。 –

+0

好吧,如果你能提出建議,我會很樂意採取不同的方法。如果成功,我不想再向服務器撥打新記錄。 – Dave

回答

0

我認爲您的嘗試做的是沿着東西:

SELECT IF(
    (SELECT COUNT(*) FROM users WHERE email = '{{email}}') > 0, 
    'success', 
    'false' 
); 
+0

不,我試圖返回整個用戶行,如果插入,而不僅僅是一條消息,如果成功。 – Dave

0

與此更換一次查詢工作:

SELECT * FROM users WHERE `id`= LAST_INSERT_ID() 
相關問題