我知道执行更新或插入的简单方法是使用'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