如何"一栏减1"?

arm*_*adi 0 php mysql

我有一个名为FLY的TABLE,我有一个名为FLY_NUM.im的列,试图在mysql查询中减少此列的值(在PHP中).这样的事情:

mysql_query("UPDATE fly SET  `fly_Num` = `fly_Num` -1 WHERE fly_ID ='1' ");
Run Code Online (Sandbox Code Playgroud)

这是错误的!每次运行此查询时,FLY_NUM列设置为零.我可以做这样的事情吗?

Dan*_*llo 5

您的查询有效且正确.也没有必要在-和之间留一个空格1.

测试用例:

CREATE TABLE fly (fly_id int, fly_num int);

INSERT INTO fly VALUES (1, 1);
INSERT INTO fly VALUES (1, 2);
INSERT INTO fly VALUES (1, 3);
INSERT INTO fly VALUES (1, 4);
INSERT INTO fly VALUES (1, 5);
INSERT INTO fly VALUES (1, 6);
INSERT INTO fly VALUES (1, 7);
Run Code Online (Sandbox Code Playgroud)

更新查询:

UPDATE fly SET `fly_Num` = `fly_Num` -1 WHERE fly_id ='1';

Query OK, 7 rows affected (0.00 sec)
Rows matched: 7  Changed: 7  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

新表内容:

SELECT * FROM fly;

+--------+---------+
| fly_id | fly_num |
+--------+---------+
|      1 |       0 |
|      1 |       1 |
|      1 |       2 |
|      1 |       3 |
|      1 |       4 |
|      1 |       5 |
|      1 |       6 |
+--------+---------+
7 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

即使您varcharfly_num列使用a ,它也可以工作:

CREATE TABLE fly (fly_id int, fly_num varchar(10));

INSERT INTO fly VALUES (1, '1');
INSERT INTO fly VALUES (1, '2');
INSERT INTO fly VALUES (1, '3');
INSERT INTO fly VALUES (1, '4');
INSERT INTO fly VALUES (1, '5');
INSERT INTO fly VALUES (1, '6');
INSERT INTO fly VALUES (1, '7');
Run Code Online (Sandbox Code Playgroud)

更新查询:

UPDATE fly SET `fly_Num` = `fly_Num` -1 WHERE fly_id ='1';

Query OK, 7 rows affected (0.00 sec)
Rows matched: 7  Changed: 7  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

新表内容:

SELECT * FROM fly;

+--------+---------+
| fly_id | fly_num |
+--------+---------+
|      1 |       0 |
|      1 |       1 |
|      1 |       2 |
|      1 |       3 |
|      1 |       4 |
|      1 |       5 |
|      1 |       6 |
+--------+---------+
7 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)