通过向现有值sql添加值来更新记录

时间:2017-11-21 06:41:46

标签: mysql sql

我正在使用REPLACE语句在具有复合主键的表中插入/更新记录。 如何向现有值添加新值并使用REPLACE语句更新记录? 这是我的sql:

function leaveBalanceRecord($f3)
{
    $userID = $this->f3->get('userID');
    $leaveType = $this->f3->get('leaveType');
    $leaveBalance = $this->f3->get('leaveBalance');
    $sql = "REPLACE INTO users_leave_balance 
    (user_id, period, leave_type, leave_balance, rollable_till_date)
    VALUES ($userID, '2017-01-03', $leaveType, $leaveBalance, 3.05)";
    $results = $this->db->exec($sql);
    return $results;
}

EG。我有以下记录:

user_id  |  period  |  leave_type  |  leave_balance
134      |  2017-01 |  1           |  10.0

现在,如果用户尝试使用user_id - 134,期间 - 2017-01,leave_type - 1和leave_balance - 3插入另一条记录,我需要将当前余额3添加到现有余额10.0并更新13.0

user_id, period, and leave_type列构成复合键

1 个答案:

答案 0 :(得分:0)

这不能与REPLACE INTO一起使用,但您可以使用INSERT INTOON DUPLICATE KEYUPDATE的组合,而UPDATE将提供用现有数据连新的方法。

示例:

INSERT INTO users SET userid = 8, username = "Foobar"
ON DUPLICATE KEY
UPDATE username = CONCAT(username, "123")

这基本上会尝试使用用户ID" 8"来插入新用户。和用户名" Foobar"。 userid是我的主键。如果它存在,它将改为更新现有用户并附加" 123"用户名。