2012-01-06 4 views
-1

Как обновить поле в mysql на основе предыдущего значения?строка обновления mysql на основе значения поля

Допустим, что count равна 3.

UPDATE MY_TABLE SET count = count-1 

Будет ли это работать? поэтому новое значение счета будет 4

+0

И как я могу добавить отрицательные числа? Я попробовал выше с count-1, но он говорит, что нулевые строки затронуты, когда count равен нулю. Результат должен быть -1? – user962449

+0

Да. Это будет работать, однако оно обновит каждую строку в таблице. Это то, что вы намереваетесь? Если нет, то вы должны указать строку, которую хотите обновить, в предложении WHERE. –

+0

Это зависит от типа столбца: -1 для целого числа со знаком (отрицательные значения разрешены), 0 для целых чисел без знака (отрицательные значения недопустимы). – CedX

ответ

0

Возможно, вы имели в виду строку или стол? Если вы имеете в виду вставить или обновить строку, вы можете использовать triggers.

0

Я дал ему попробовать, и это сработало, поэтому, возможно, вам нужно показать нам инструкцию CREATE для таблицы. Результаты тестов:

mysql> create table aint (count int not null default 0); 
Query OK, 0 rows affected (0.25 sec) 

mysql> insert into aint VALUES(1); 
Query OK, 1 row affected (0.06 sec) 

mysql> select * from aint; 
+-------+ 
| count | 
+-------+ 
|  1 | 
+-------+ 
1 row in set (0.00 sec) 

mysql> update aint set count = count-1; 
Query OK, 1 row affected (0.06 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

mysql> select * from aint; 
+-------+ 
| count | 
+-------+ 
|  0 | 
+-------+ 
1 row in set (0.00 sec) 

mysql> update aint set count = count-1; 
Query OK, 1 row affected (0.00 sec) 
Rows matched: 1 Changed: 1 Warnings: 0 

mysql> select * from aint; 
+-------+ 
| count | 
+-------+ 
| -1 | 
+-------+ 
1 row in set (0.00 sec) 
Смежные вопросы