2017-07-17 176 views
0

我想補充甚至刪除一個值,並用新的值更新表中的值。 假設我有一個5分的特工。我不想添加新的一行或者用現在的新值寫另一個5分。我希望它能得到5-5分的5 + 5分。然後更新列中的值。更新添加或減法

到目前爲止,我已經找到

("Insert Into Bee_Sheet(Agents_Name, Points, Date_added)Values(" + AN + "','" + PNumber + "','" + DateTime.Now + "') ON DUPLICATE KEY UPDATE Points=VALUES(Points)-VALUES(PNumber) 

但我報錯了我的AN這是我們不得不在AD代理的名稱。告訴我他們的名字附近有一個語法錯誤,我們使用first.last名稱方案。這不應該影響出來。

所以我的問題是什麼是重寫的SQL命令可以添加或從值去除一定量,然後更新它的最好方法是什麼?

如果您需要了解更多信息,請讓我知道。

+5

我的第一個建議是使用參數代替連接值來創建您的SQL命令。我相信問題在於,你在'AN'之前沒有單引號,但有了參數,你不必擔心你什麼時候或不需要引號。 – juharr

+2

你不是更擔心語法錯誤嗎?看起來這比你的數學問題更重要。對這個問題的答案是不要CONCATENATE SQL。使用參數或任何MySQL調用它們。 – hoodaticus

+1

我很困惑你的問題。你說:「我不想添加新行或用新值寫現有值」,但這正是你的示例SQL所做的。 – maccettura

回答

0

爲了您的語法錯誤:您的查詢遺失你的「AN」值之前開單引號。

有關更新的價值您的實際問題,它看起來像你在正確的軌道上。當然,假設您的Bee_Sheet表上有一個unique indexprimary key。如果你沒有唯一的索引或者pkey,那麼你的查詢只會執行插入操作。

我唯一的建議是,你的UPDATE也許應該補充PNumber來分,而不是減去它。

Insert Into Bee_Sheet 
    (Agents_Name, Points, Date_added) 
Values 
    ('" + AN + "','" + PNumber + "','" + DateTime.Now + "') 
ON DUPLICATE KEY 
    UPDATE 
     Points=VALUES(Points)+VALUES(PNumber) 
相關問題