我知道執行更新或插入的簡單方法是使用'REPLACE',但它需要一個主鍵,在沒有主鍵的情況下如何?MySQL更新或插入沒有主鍵的表格
我在表5列:
- remark_id(自動遞增的主鍵)
- USER_ID
- remark_user_id
- 此言
- LAST_MODIFIED
我希望檢查一下user_id
和remark_user_id
在更新備註之前先存在,否則將創建一個新行以將備註保存爲user_id
和remark_user_id
。
這裏是我的代碼
INSERT INTO `users_remark` (`user_id`, `remark_user_id`, `remark`)
SELECT 1,3 ,'testing123'
FROM dual
WHERE NOT EXISTS
(SELECT *
FROM `users_remark`
WHERE `user_id` = 1
AND `remark_user_id` = 3)
運行SQL後,什麼也沒有發生在我的數據庫。沒有添加或更新記錄。
[編輯]
代碼更改使用IF...ELSE...
但它與一些語法錯誤的第一行
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF EXISTS (SELECT * FROM users_remark WHERE user_id' at line 1
IF EXISTS (
SELECT * FROM `users_remark`
WHERE `user_id`=1 AND `remark_user_id` = 3
)
THEN UPDATE `users_remark` SET `remark` = 'testing123'
WHERE `user_id`=1 AND `remark_user_id` = 3
ELSE
INSERT INTO `users_remark` SET `remark` = 'testing123', `user_id`=1, `remark_user_id` = 3
如果此查詢的結果是:'SELECT * FROM users_remark WHERE user_id = 1 AND remark_user_id = 3'由於'NOT EXISTS'子句,沒有任何反應是正常的。只是爲了提供信息,'INSERT'語句永遠不會執行'UPDATE'。 – 2014-09-01 05:19:36
如何更新案例?應該如何編輯? – Simon 2014-09-01 05:21:03
要在你的表上進行更新:'UPDATE users_remark SET remark ='testing123'WHERE user_id = 1 AND remark_user_id = 3' – 2014-09-01 05:24:26