簡體   English   中英

如果行不存在則插入否則更新行

[英]insert if row do not exists else update row

我在投票表中有自動遞增字段,用戶可以在其中對帖子投贊成票和反對票。 如果用戶請求對帖子投贊成票,我想檢查表格以查看他們是否已經投票(反對或贊成)。

如果用戶已經投反對票並且插入了一條記錄,這次他想更改為投贊成票:我只想更新記錄並將投票狀態設置為 1,同樣如果用戶請求投反對票並且記錄是由同一用戶插入,然后只需更新記錄並將列狀態設置為 0。

我寫了一個 SQL 來完成這項工作,但它在網絡控制台下給了我錯誤:你的 SQL 語法有錯誤; 檢查與您的 MariaDB 服務器版本相對應的手冊,以在第 8 行的 'UPDATE votes VT SET VT.vote_status = '1', VT.vote_time='1583319756' ' 附近使用正確的語法

我搜索了幾個例子,但它沒有看到工作。 我不想使用 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}')

我建議您更改功能更新和插入。 您可以使用“合並到”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM