簡體   English   中英

MySQL(如果存在)更新值,否則插入

[英]MySQL if exists update values else insert

我正在創建一個存儲學生出勤率的應用程序。

我正在創建將存儲此出勤率的數據庫,並且卡在mySQL查詢中。

我希望查詢搜索“講座名稱”和“ user_id”(來自其他數據庫的外鍵),如果存在,則增加學生參加講座的人數(出席人數++和總數++)

到目前為止,我有這個:

    INSERT INTO `attendance`(`attendance_id`, `module_code`, `lecture_name`, 
`attended`, `total`, `user_id`) VALUES ("null","test","TEST",1,1,1)
   ON DUPLICATE KEY UPDATE 
 attended = attended+1,total = total+1                                                                                              

這將插入一個新行,但是對於ON DUPLICATE,無法傳遞主鍵來檢查“重復項”

我想知道在MySQL中是否有除ON DUPLICATE KEY之外的另一種方法,或者是否有人可以幫助我。

這是數據庫的屏幕截圖。 例如,請參見“運籌學”是在應增加價值時創建的。 這是因為我無法將主鍵添加到SQL查詢中。

謝謝您的幫助。

數據庫的屏幕截圖

在雙引號中使用null令人不安。 因此,我認為您應該將查詢編寫為:

INSERT INTO `attendance`(`module_code`, `lecture_name`, `attended`, `total`, `user_id`)
    VALUES ('test', 'TEST', 1, 1, 1)
    ON DUPLICATE KEY UPDATE attended = attended + 1, total = total + 1 ;   

為此,您似乎想要在(lecture_name, user_id)上具有唯一索引。

您的數據模型似乎確實可疑,因為該表在多行上重復了lecture_name 在我看來,您想要一個lectures表,並在該表中使用lecture_id

暫無
暫無

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

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