【问题标题】:Update field with mathematical operation from two tables使用两个表中的数学运算更新字段
【发布时间】:2014-11-12 16:32:40
【问题描述】:

我有两个带有两个数字字段的表。

mysql> desc cc_call;
+-----------------------+---------------+------+-----+---------------------+----------------+
| Field                 | Type          | Null | Key | Default             | Extra          |
+-----------------------+---------------+------+-----+---------------------+----------------+
| card_id               | bigint(20)    | NO   |     | NULL                |                | 
| sessionbill           | float         | YES  |     | NULL                |                | 

mysql> desc cc_card;
+---------------------+---------------+------+-----+---------------------+----------------+
| Field               | Type          | Null | Key | Default             | Extra          |
+---------------------+---------------+------+-----+---------------------+----------------+
| id                  | bigint(20)    | NO   | PRI | NULL                | auto_increment | 
| credit              | decimal(15,5) | NO   |     | 0.00000             |                | 

我需要用两个字段的总和来更新 cc_card.credit 字段。

我首先尝试使用带有数学运算的 SELECT:

SELECT cc_call.sessionbill+cc_card.credit 
FROM cc_card WHERE cc_card.id = (SELECT cc_call.card_id 
FROM cc_call 
WHERE cc_call.card_id=cc_call.id);

出现以下输出错误:

ERROR 1054 (42S22): 'field'中的未知列'cc_call.sessionbill' 列表'

有什么想法吗?

【问题讨论】:

    标签: mysql sql-update sum


    【解决方案1】:

    您应该使用 JOIN:

    UPDATE cc_card
    JOIN cc_call ON cc_call.card_id = cc_card.id
    SET cc_card.credit = cc_call.sessionbill+cc_card.credit 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多