2012-08-22 101 views
0

主要問題是假設我現在有一個值存儲在數據庫= 26現在,如果用戶做了一些行動,我必須增加值1是否有任何預定義的方式在SQL中做到這一點。如何增加數據庫條目?

現在我正在提取值然後加1,然後再次更新條目。

+0

從Fluffeh答案給出的方法避免了併發性問題,當兩個單獨的會話當兩個會話拉同一個值並給它加1時,該值只會遞增1,而不會遞增2.使用來自Fluffeh的方法,可以保證每個會話都會增加值由1. – spencer7593

回答

6

是,運行SQL象下面這樣:

update yourTableName 
    set theColumnYouWant=theColumnYouWant+1 
    where yourConditions=YourConditionCriteria 

更新語法的一個具體的例子:

mysql> select * from first; 
+------+-------+ 
| bob | title | 
+------+-------+ 
| 1 | aaaa | 
| 2 | bbbb | 
| 3 | cccc | 
| 4 | NULL | 
| 5 | eeee | 
+------+-------+ 
5 rows in set (0.00 sec) 

mysql> update first set bob=bob+1 where title='eeee'; 
Query OK, 1 row affected (0.00 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

mysql> select * from first; 
+------+-------+ 
| bob | title | 
+------+-------+ 
| 1 | aaaa | 
| 2 | bbbb | 
| 3 | cccc | 
| 4 | NULL | 
| 6 | eeee | 
+------+-------+ 
5 rows in set (0.00 sec) 
+0

感謝男人真的很傻 –

+0

@Anandmohansinha我編輯了一個控制檯顯示的例子,因爲我得到的答案質量太多upvotes :) – Fluffeh

+0

您的答案很好地解釋瞭如何使用sql語法增加列值,但具體示例shouldn' t可能會展示如何在「id」列上進行操作,因爲它可能會誤導某些人。 'id'列通常應該設置爲'autoincrement'。 – Bogdan