如果表中存在两列,则更新表,如果两列中的一列不同,则插入

时间:2015-06-04 03:13:38

标签: mysql insert

我有一台台式电脑,其中包含以下列:

node_modules

我正在尝试创建一个mysql语句,如果computer(computer_id(pk), office_id, computer_name, login, date, time)office_id已经存在,将更新一行,如果不存在则会插入新行。如果computer_name不同但office_id已经存在,我仍想插入新行,反之亦然。如果有人可以给我一些建议。我非常感激。

2 个答案:

答案 0 :(得分:0)

您可以使用mysql的on duplicate key update功能来完成此任务。

假设您对(computer_name, office_id)有唯一约束,则以下查询将在新的(computer_name, office_id)对中插入新行,否则更新现有行:

insert into computer (office_id, computer_name, login, `date`, `time`) values
  (..., ..., ..., ..., ...)
on duplicate key update login = values(login), `date` = values(`date`);
                        ^^^^^^^^^^^^^^^^^^^^^ here is how you specify which values to update

see it in action here

答案 1 :(得分:-1)

尝试将UNIQUE office_id和computer_name添加到表格中。

之后......

//INSERT statement
    $stmt = "INSERT IGNORE INTO table";
    if ($conn->query($stmt) === false) {
        die("Database error:".$conn->error);
    }

// Check for success
    if (affected_rows == 0) {
      UPDATE TABLE
    } else {

 //Success and return new id
      INSERT IN TO TABLE
    }