我有一个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
注释:
我使用
members.amount
代替members.amount + :amt
因为:amt
已经已添加一次到members.amount
。您的更新语句会更新
members
表中的所有记录,但插入语句只会为特定用户创建记录。我认为您应该将更新语句限制为仅特定用户,或者不将插入限制为特定用户。我选择了后一种方法。如果你想以非规范化的方式存储余额,那么我宁愿在accounts表上使用触发器来更新members表中的余额,而不是使用2条语句。
<
关于mysql - 如何将值添加到列字段中已有的值,然后将更新值插入到另一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40283665/