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

Mysql 如果表中存在两列,则更新表;如果两列之一不同,则插入,mysql,insert,Mysql,Insert,我有一台台式计算机,它有以下列: 计算机idpk、办公室id、计算机名称、登录名、日期、时间 我正在尝试创建一个mysql语句,如果office_id和computer_name已经存在,它将更新一行,如果它不存在,它将插入一个新行。如果办公室id不同,但计算机名称已存在,我仍希望插入新行,反之亦然。如果有人能给我一些建议。非常感谢。您可以使用mysql的on duplicate key update功能来完成这项工作 假设您对计算机名称、办公室id有唯一的约束,以下查询将在中插入新行,以获得新

我有一台台式计算机,它有以下列:

计算机idpk、办公室id、计算机名称、登录名、日期、时间

我正在尝试创建一个mysql语句,如果office_id和computer_name已经存在,它将更新一行,如果它不存在,它将插入一个新行。如果办公室id不同,但计算机名称已存在,我仍希望插入新行,反之亦然。如果有人能给我一些建议。非常感谢。

您可以使用mysql的on duplicate key update功能来完成这项工作

假设您对计算机名称、办公室id有唯一的约束,以下查询将在中插入新行,以获得新的计算机名称、办公室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
您可以使用mysql的on duplicate key update功能来实现这一点

假设您对计算机名称、办公室id有唯一的约束,以下查询将在中插入新行,以获得新的计算机名称、办公室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

尝试将唯一的办公室id和计算机名称添加到表中

在那之后

//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
    }

尝试将唯一的办公室id和计算机名称添加到表中

在那之后

//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
    }

@齐林。。“我只是想帮忙,你不必给我否决票。”冷静点.“。。我只是想帮忙,你不需要给我否决票。