我一直在爭奪這個時間太長,所以我在這裏尋求幫助...的MySQL 5.5查詢基於IF語句
我有我想要做以下MySQL的存儲過程:
給出一個「身份證」和給定記錄中的「用戶名」
- 如果ID不存在表中,然後創建記錄
- 否則,如果ID存在,用戶名是不一樣的東西存在然後更新記錄
- 別的什麼也不做
我已經試過如下:
BEGIN
DECLARE doCreate INT;
DECLARE doUpdate INT;
SELECT COUNT(*) INTO doCreate FROM app_user WHERE id=1;
IF (doCreate > 0) THEN
SELECT COUNT(*) INTO doUpdate FROM app_user WHERE id=1 AND username='other';
END IF
IF(doCreate = 0) THEN ---SYNTAX ERROR ON THIS LINE---
SELECT 'CREATE';
ELSE IF(doUpdate = 0) THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END IF
END
我也試過用case語句代替IF-ELSEIF-else塊,但得到相同的結果...
CASE ---ERROR ON THIS LINE---
WHEN doCreate = 0 THEN
SELECT 'CREATE';
WHEN doUpdate = 0 THEN
SELECT 'UPDATE';
ELSE
SELECT 'NOTHING';
END
- 我似乎得到第一END IF之後到來的任何一個語法錯誤,所以這是出現的第一個問題...
任何幫助將不勝感激 - 我敢肯定有更好的方法來做到這一點。
更簡單的方法是使用INSERT(id,username)INTO app_user VALUES({id},{username})ON DUPLICATE KEY UDPATE username = VALUES(username)'。 – Vatev 2012-07-28 19:25:48
Vatev,我認爲你的解決方案會一直執行更新,如果id存在。如果所有字段已經完全相同,我不希望它執行更新。 – Cailen 2012-07-28 19:33:13
是的,它會的。我以爲我應該建議它,因爲它以一種更簡單的方式對存儲過程做類似的事情。 – Vatev 2012-07-28 19:38:07