簡體   English   中英

在一個查詢中更新/增加多個MySQL列

[英]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 BYLIMIT

我認為你的calls_to字段為int, cost_to字段為不同類型,所以只有你沒有得到結果。 檢查字段的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM