[英]Update/Increment multiple MySQL columns in one query
我有這個查詢,有效...
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)
檢查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;
乍一看,查詢看起來很好。 cost_to
字段的類型是什么? 仔細檢查它不是一個完整的類型,因為你將無法得到你想要的結果。 (作為測試,添加一個更大的值,比如4到cost_to。)
單表語法:
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子句(如果給定)指定標識要更新的行的條件。 如果沒有WHERE子句,則更新所有行。 如果指定了ORDER BY子句, 則按指定的順序更新行。 LIMIT子句限制了可以更新的行數。
對於多表語法, UPDATE更新table_references中指定的滿足條件的每個表中的行。 每個匹配的行都會更新一次,即使它與條件多次匹配也是如此。 對於多表語法,不能使用ORDER BY和LIMIT 。
我認為你的calls_to
字段為int, cost_to
字段為不同類型,所以只有你沒有得到結果。 檢查字段的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.