我将在MariaDB中处理学生成绩的表格。当学生发送新的成绩时,我需要首先检查学生的记录是否存在于表格中,如果是,则更新如果新成绩高于现有成绩。如果学生不在表格中,请插入新的记录。是否可以为此作业编写一个sql查询:select,然后比较然后插入/更新
以下是我的PHP代码(为简单起见,假设学生的名字是约翰和他的新等级100,$conn
是mysqli
对象):
$result = $conn->query("select name, grade from grade_sheet where name='john' and grade<100");
if ($result->num_rows > 0) {
$conn->query("update grade_sheet set grade=100 where name='john'");
} else {
$conn->query("insert into grade_sheet (name, grade) values ('john', 100)");
}
是否可以简化代码?更具体地说,是否可以使用像insert ... on duplicate key update
?
这里name
是主键。是不是真的,在最糟糕的情况下,上面的代码需要搜索表两次?
你的代码已经够简单了。试图在单个sql语句中使它更难以阅读和理解。它已经很好了。在一个代码中有更具体的理由吗? –
@JorgeCampos我的意思是如果'插入...重复密钥更新'可以在这里使用?在最坏的情况下,上面的代码需要搜索表两次? –