我試圖創建檢查表,看是否存在記錄,如果沒有,它把記錄添加到SQL語句。如果它確實存在,它改變字段的值爲TRUE。的MySQL如果(SELECT COUNT(*)返回一個#1064錯誤
If (SELECT COUNT(*) FROM 'my_preferences' JOIN users ON 'user_id' = 'mp_user_id') =1
UPDATE `mp_start_page`= TRUE where 'user_id' = 'mp_user_id'
Else
INSERT INTO `my_preferences` (`mp_user_id`, `mp_start_page`) VALUES ('user_id', 'TRUE')
我也看着試圖與INSERT實現這個...對重複密鑰更新功能,但我似乎無法得到這兩種工作。
感謝您幫助
編輯補充:我比較兩個單獨的表(my_preferences &用戶)。我需要檢查my_preferences表,看是否在mp_user_id領域存在users.user_id,如果是的話,它更新mp_state_page爲TRUE,如果沒有,它增加了製作筆錄mp_user_id = USER_ID和mp_start_page爲TRUE
我假設在您的查詢中使用單引號而不是back ticks只是一個錯字,對嗎? –
這種事情不是有效的MySQL查詢。唯一可以擁有這種邏輯的地方是存儲過程,函數或觸發器。查詢以SELECT,UPDATE,INSERT等開始。您可以使用INSERT INTO ... SELECT進行條件插入,或使用INSERT ... ON DUPLICATE KEY UPDATE執行條件UPDATE,但是沒有單個查詢邏輯。 –
好了,現在我想這樣的: INSERT INTO my_preferences(mp_user_id,mp_start_page)VALUES((SELECT'user_id'的使用者), 'TRUE')對重複密鑰更新mp_start_page = 'TRUE' 返回此錯誤: #1242 - 子查詢返回多於一行 – EMUELLER