如果行不存在则插入,否则更新行

时间:2020-03-04 11:08:58

标签: mysql insert sql-update

我在投票表中有一个自动递增的字段,用户可以在其中对文章进行上下投票。如果用户要求对该帖子进行投票,我想查看表格以查看他们是否已经投票(否决或赞成)。

如果用户已经下投票并插入了一条记录,而这次他想更改为上投票:我只想更新记录并将表决状态设置为1,同样,如果用户请求下投票并同一用户插入一条记录,然后更新记录并将列状态设置为0。

我写了一个SQL来完成这项工作,但是在网络控制台下却给了我错误: 您的SQL语法有误。检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在'UPDATE投票VT SET附近使用 VT.vote_status ='1', VT.vote_time ='1583319756''在第8行

我搜索了几个示例,但没有用。我不想使用sql ON DUPLICATE KEY,我只为重复的唯一键读过它。

我要检查2列或3列与我要插入的记录是否相同,然后更新其他插入。

我该如何实现?

我的代码:

IF EXISTS (
                SELECT * FROM $votes_table VT WHERE VT.vote_ask_id='{$Qid}' 
                AND VT.vote_type='{$vote_type}' 
                AND VT.vote_status='{$vote_down_status}'
                AND VT.vote_user_id='{$CUid}'

                ) 
    UPDATE  $votes_table VT SET 
            VT.vote_status = '{$vote_up_status}',
            VT.vote_time='{$current_time}' 
            WHERE VT.vote_user_id = '{$CUid}' 
            AND VT.vote_ask_id = '{$Qid}' 

    ELSE    INSERT INTO $votes_table(vote_ask_id,vote_type,vote_status,vote_user_id,vote_time) 
            VALUES('{$Qid}','{$vote_type}','{$vote_up_status}','{$CUid}','{$current_time}')

1 个答案:

答案 0 :(得分:0)

我建议您更改功能更新并插入。 您可以使用“合并到”

相关问题