我有这个查询,有效......
UPDATE `contacts`
SET `calls_to`=`calls_to`+1
WHERE `contact_no` = '0412345678';
我还想做的是在费用字段中添加一个值。根据我的理解,这样做的方法是......
UPDATE `contacts`
SET `calls_to` = `calls_to`+1,
`cost_to` = `cost_to`+0.25
WHERE `contact_no`='0412345678';
显然,正如我在这里张贴的那样,它并没有像我期望的那样发挥作用。
- UPDATE -
根据要求,表格结构..
id int(255) auto_increment
contact_owner varchar(255)
contact_no varchar(11)
contact_name varchar(255)
calls_to int(255)
txts_to int(255)
time_talked_to int(255)
cost_to decimal(65,2)
答案 0 :(得分:3)
检查cost_to
的数据类型是否为int。如果列的值不为null,也要更新列。
UPDATE `contacts`
SET `calls_to` = `calls_to`+1,
`cost_to` = `cost_to`+0.25
WHERE `contact_no`='0412345678' AND
calls_to is not null AND
cost_to is not null;
答案 1 :(得分:1)
乍一看,查询看起来很好。 cost_to
字段的类型是什么?仔细检查它不是一个完整的类型,因为你将无法得到你想要的结果。 (作为测试,添加一个更大的值,比如4到cost_to。)
答案 2 :(得分:0)
我认为您的calls_to
字段为int,cost_to
字段为不同类型,因此只有您没有得到结果。检查字段的类型。
答案 3 :(得分:0)
单表语法:
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
多表语法:
UPDATE [LOW_PRIORITY] [IGNORE] table_references
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ...
[WHERE where_condition]
对于单表语法, UPDATE 语句使用新值更新指定表中现有行的列。 SET 子句指示要修改的列以及应该给出的值。每个值都可以作为表达式给出,或者关键字 DEFAULT 可以将列明确设置为其默认值。 WHERE 子句(如果给定)指定用于标识要更新的行的条件。使用 no WHERE 子句,所有行都会更新。如果指定了 ORDER BY 子句,则按指定的顺序更新行。 LIMIT 子句限制了可以更新的行数。
对于多表语法, UPDATE 更新table_references中指定的满足条件的每个表中的行。每个匹配的行都会更新一次,即使它与条件多次匹配也是如此。对于多表语法,不能使用 ORDER BY 和 LIMIT 。