如果 table 中存在两列,则更新 table,如果两列之一不同,则插入
Update table if two columns exist in table and insert if one of the two columns are different
我有一台 table 电脑,它有以下列:
computer(computer_id(pk), office_id, computer_name, login, date, time)
我正在尝试创建一个 mysql 语句,如果 office_id
和 computer_name
已经存在,它将更新一行,如果不存在,将插入一个新行。如果 office_id
不同但 computer_name
已经存在,我仍想插入一个新行,反之亦然。如果有人可以给我一些建议。非常感谢。
您可以使用 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
尝试将 UNIQUE office_id 和 computer_name 添加到 Table。
在那之后....
//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
}
我有一台 table 电脑,它有以下列:
computer(computer_id(pk), office_id, computer_name, login, date, time)
我正在尝试创建一个 mysql 语句,如果 office_id
和 computer_name
已经存在,它将更新一行,如果不存在,将插入一个新行。如果 office_id
不同但 computer_name
已经存在,我仍想插入一个新行,反之亦然。如果有人可以给我一些建议。非常感谢。
您可以使用 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
尝试将 UNIQUE office_id 和 computer_name 添加到 Table。
在那之后....
//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
}