我知道执行更新或插入的简单方法是使用' REPLACE'但它需要一个主键,如果没有主键的表怎么样?
我的表格中有5列:
我希望在更新评论之前先检查user_id
和remark_user_id
对是否存在,否则将创建一个新行以使用user_id
和{{保存评论1}}。
这是我的代码
remark_user_id
运行SQL后,我的数据库中没有任何反应。没有添加或更新记录。
[编辑]
使用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)
进行代码更改,但第一行出现了一些语法错误
IF...ELSE...
答案 0 :(得分:1)
以下是包含INSERT
和UPDATE
子句(T-SQL语法)的查询:
IF [condition here] BEGIN
UPDATE `users_remark`
SET `remark` = 'testing123'
WHERE `user_id`=1
AND `remark_user_id` = 3
END
ELSE BEGIN
INSERT INTO `users_remark` (`user_id`, `remark_user_id`, `remark`)
VALUES (1, 3, 'testing123)
END
编辑:与MySQL语法相同的查询
DECLARE @numrecords INT
SELECT @numrecords = count(*)
FROM `users_remark`
WHERE `user_id` = 1
AND `remark_user_id` = 3
IF @numrecords > 0 THEN
UPDATE `users_remark`
SET `remark` = 'testing123'
WHERE `user_id`=1
AND `remark_user_id` = 3
ELSE
INSERT INTO `users_remark` (`user_id`, `remark_user_id`, `remark`)
VALUES (1, 3, 'testing123)
END IF
希望这会对你有所帮助。
答案 1 :(得分:0)
我终于尝试将代码放到php中,它的工作原理也更容易理解。
$checkRemark = mysqli_query($GLOBALS['db_conn'], "SELECT * FROM `users_remark` WHERE `user_id`=".$data['uid']." AND `remark_user_id` = ".$data['ruid']);
if (mysqli_num_rows($checkRemark)>0){
$remarkSql = "UPDATE `users_remark`
SET `remark` = '".$data['remark']."'
WHERE `user_id`=".$data['uid']."
AND `remark_user_id` = ".$data['ruid'];
} else {
$remarkSql = "INSERT INTO `users_remark` (`user_id`, `remark_user_id`, `remark`)
VALUES (".$data['uid'].", ".$data['ruid'].", '".$data['remark']."')";
}