如何在列字段中为现有值添加值,然后将更新值插入另一个表中

时间:2016-10-27 11:37:24

标签: mysql sql

我有一个members表,列amount已经有一个整数值,我希望添加到该值,然后使用其内容更新另一个名为{{1}的表保留了被记入的金额和新的余额(即添加后)

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);"; 查询中获取members.amount表并在update查询中使用它是否有更好的方法,一个比我更有效的方法试过。

示例数据:

insert

Members Table userid amount --------------------- u123 4000 y123 5000 Accounts Table userid credit balance date 目前是空的,所以我想做的是在memebrs表中为所有值添加300,然后插入这样的帐户。

Accounts table

2 个答案:

答案 0 :(得分:0)

选择查询是一个简单的插入,唯一的问题是关于日期

INSERT INTO Accounts (userid, credit, balance, date)
  SELECT userid, 300, amount, NOW()
    FROM Members;

答案 1 :(得分:0)

我会使用insert ... select ...语句来实现所需的输出:

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

注意:

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

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

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