2017-07-17 80 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)