如何使用 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
添加一个新成绩,我正在使用 php 和 mysql 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 在不插入新值的情况下更新表中的现有值
即使原始模型中未指定新值,如何将新值添加到现有 MongoDB 数据库中