mysql - 如何将值添加到列字段中已有的值,然后将更新值插入到另一个表中

标签 mysql sql

我有一个members表,其中有一列amount,其中已经有一个整数值,我希望添加到该值,然后使用其内容来更新另一个值名为 accounts 的表,其中保存存入的金额和新余额(即添加后)

   $this->query_array = array(':amt' =>  $amount, ':uid' => $userid, ':dat' => $date );

    $this->query_string = "UPDATE members SET amount = amount + :amt;
                           INSERT INTO accounts VALUES ( :uid, :amt, members.amount + :amt,  :dat);";

这就是我上面的查询,我尝试从 update 查询中获取 members.amount 表并在 insert 查询中使用它有一种更好的方法,比我尝试过的方法更有效。

示例数据:

         Members Table      userid       amount
                             ---------------------
                               u123        4000
                               y123        5000

          Accounts Table      userid       credit   balance    date

Accounts 表 目前为空,所以我想要做的是将 300 添加到 memebrs 表中的所有值,然后插入到类似这样的帐户中。

          Accounts Table      userid       credit   balance    date
                              -------------------------------------
                                u123       300      4300       11-11-11
                                y123       300      5300       11-11-11

最佳答案

我会使用 insert ... select ...声明以实现所需的输出:

INSERT INTO accounts
SELECT members.userid, :amt, members.amount,  :dat FROM members

注释:

  1. 我使用 members.amount 代替 members.amount + :amt 因为 :amt 已经已添加一次到 members.amount

  2. 您的更新语句会更新members 表中的所有记录,但插入语句只会为特定用户创建记录。我认为您应该将更新语句限制为仅特定用户,或者不将插入限制为特定用户。我选择了后一种方法。

  3. 如果你想以非规范化的方式存储余额,那么我宁愿在accounts表上使用触发器来更新members表中的余额,而不是使用2条语句。

    <

关于mysql - 如何将值添加到列字段中已有的值,然后将更新值插入到另一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283665/

相关文章:

MySQL 根错误

mysql - 如何从mysql中的三个表中获取某些列

php - 使用php上传图片出错

mysql - 如何检索前 10 个条目?

php - 选择一个表中的所有数据并将其插入到另一个表中

sql - 选择每个人在其他表中有多少文档

sql - 根据 SQL 条件分配季度数和年份数

php - 搜索关键字并应用过滤器

java - 如何从当前系统访问另一个系统中的derby数据库?

sql - 如何使用 SQL 获取值列表以连接到 XML API?