我將在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我的意思是如果'插入...重複密鑰更新'可以在這裏使用?在最壞的情況下,上面的代碼需要搜索表兩次? –