如何使用 where 将新值插入表中

Posted

技术标签:

【中文标题】如何使用 where 将新值插入表中【英文标题】:How to Insert new value into table using where 【发布时间】:2022-01-04 06:26:57 【问题描述】:

我有一个具有这种结构的表名“Grade”:

ID  Student_ID First_Name Last_Name Grade
1       1         John      Smith    60
2       2         Garry     Poul     70
3       1         John      Smith    80

我想在Grade 表中为Student_ID = 1 添加一个新成绩,我正在使用 phpmysql DB。

我用了这个,但给了我错误!

$sql = "INSERT INTO Grade (Grade) VALUES ('85') WHERE Student_ID=1 ";

在搜索过程中发现MySQL中不能使用WHERE with INSERT,请问如何解决?

谢谢大家

【问题讨论】:

你想更新而不是插入 此数据是非规范化的 - 学生姓名应在单独的“学生”表中,而不在此成绩表中重复。此表只需要学生 ID 和成绩字段......也许还有学科 ID - 否则你怎么知道成绩是什么? 无论如何,您是在问如何为学生 1 添加额外成绩,或更改现有成绩之一?根据您的措辞,还不清楚。 insert into grade ( grade,student_id) values (85,1)? 这能回答你的问题吗? How to copy a row and insert in same table with a autoincrement field in MySQL? 【参考方案1】:

插入: 如果要为表的所有列添加值,则不需要在 SQL 查询中指定列名

更新: 更新表中的记录时!注意 UPDATE 语句中的 WHERE 子句。 WHERE 子句指定应该更新哪些记录。如果省略 WHERE 子句,表中的所有记录都会被更新!

更新等级 设置等级 = 85 WHERE Student_ID=1 ;

【讨论】:

INSERT 永远没有 WHERE 子句 you do not need to specify the column names in the SQL query...尽管如此,您仍然应该这样做,以防订单发生变化,或者在列表中间添加更多字段 但我试过UPDATE它更新了所有未添加的Student_ID成绩,我想添加不更新。【参考方案2】:

要更新现有记录,请使用 UPDATE 而不是 INSERT

UPDATE Grade 
SET Grade = 85  
WHERE Student_ID = 1 

【讨论】:

但会更新表中的所有Student_ID 值!我想添加一个不更新的新值

以上是关于如何使用 where 将新值插入表中的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Java Spring Boot 在不插入新值的情况下更新表中的现有值

Mongoose:如何将新值推送到特定键中?

如何将新值推送到 Mongoose 中的嵌套数组

即使原始模型中未指定新值,如何将新值添加到现有 MongoDB 数据库中

如何在 ASP .NET MVC 5 中使用 select2 将新值动态添加到列表框并将其传递给控制器​​?

如何使用 WHERE 条件从 Excel 工作表中插入字段以访问数据库