【Sql Server】Update中的From语句,以及常见更新操作方式

发布时间:2026/8/28 19:04:39
【Sql Server】Update中的From语句,以及常见更新操作方式 欢迎来到《小5讲堂》大家好我是。 这是《Sql Server》系列文章每篇文章将以博主理解的角度展开讲解 特别是针对知识点的概念进行叙说大部分文章将会对这些概念进行实际例子验证以此达到加深对知识点的理解和掌握。 温馨提示博主能力有限理解水平有限若有不对之处望指正#### 目录* 前言* 常规更新* * 分组查最大值 * 编号更新 * 查询更新* 常见更新方式* * UPDATE 语句 * 使用子查询更新数据 * 使用 JOIN 更新数据 * 使用临时表进行更新 * 使用事务进行更新 * 使用触发器进行更新* 常见场景* * 批量修改数据场景 * 需要注意的事项* 文章推荐前言–最近在做数据修改有时候太久没写sql语句突然想通过子查询的方式去批量更新数据的时候 还是有点不知所措那就一步一步来吧也写篇文章梳理和总结下毕竟也是基本的操作加深印象。 上篇文章已经介绍分组查询方法这篇文章将通过分析update更新有那些语句和方式方法。常规更新----基于上篇文章的表数据先查询同城市同区域同姓名存在等于2条的记录 并将最大编号的那条记录代理商更新为张三2城市区县代理商三者分组查询### 分组查最大值 select * from test_name select city_name,area_name,agent_name,max(id) maxId from test_name group by city_name,area_name,agent_name having count(1)1### 编号更新不管任何时候进行更新操作一定更要三思问问自己加了where条件没有切勿大意经验之谈 update test_name set agent_name‘张三2’ where id2 select * from test_name### 查询更新通过子查询方式更新数据将上面的数据更新还原进行下面更新操作 update test_name set agent_name‘张三_’convert(varchar(50),t.maxId) from( select city_name,area_name,agent_name,max(id) maxId from test_name group by city_name,area_name,agent_name having count(1)1 ) t where test_name.idt.maxId select * from test_name常见更新方式------在 SQL Server 中更新数据是数据库管理中常见且重要的操作之一。### UPDATE 语句使用 UPDATE 语句可以直接更新表中的数据。语法如下 UPDATE table_name SET column1 value1, column2 value2, … WHERE condition;这里的 table_name 是你要更新的表名column1 value1, column2 value2, … 是需要更新的列和对应的值WHERE condition 是更新的条件。### 使用子查询更新数据如前面提到的可以使用子查询来更新表中的数据例如将一个表中的列更新为另一个表中的计算结果。### 使用 JOIN 更新数据通过 JOIN 操作可以根据两个或多个表之间的关系来更新数据。例如可以使用 INNER JOIN、LEFT JOIN 或其他类型的 JOIN 来更新匹配的数据。### 使用临时表进行更新有时候可以先将需要更新的数据存储在临时表中然后再通过 JOIN 或其他方式将其更新回主表。### 使用事务进行更新在更新数据时尤其是涉及多个表或复杂逻辑时使用事务可以确保数据的一致性。通过启动事务、提交或回滚事务可以有效地管理更新操作。### 使用触发器进行更新在某些情况下可能希望在更新某个表时自动触发另一些操作这时可以使用触发器来实现。 触发器可以在更新、插入或删除数据时自动执行相关的操作。 无论使用哪种更新数据的方式都需要谨慎操作确保更新的数据准确无误。在进行重要的数据更新操作前务必备份数据以防止意外情况发生。经验之谈慎之又慎。常见场景----在 SQL Server 中批量修改数据是常见的需求之一特别是在需要同时更新多行记录时。### 批量修改数据场景1.大批量数据更新 当需要更新大量数据时采用批量更新的方式可以提高效率减少单独更新每行记录的开销。2.根据条件批量更新 根据特定条件选择需要更新的数据可以使用 WHERE 子句来筛选符合条件的记录进行批量更新。3.使用临时表批量更新 将需要更新的数据存储在临时表中然后利用临时表与目标表进行 JOIN 更新数据。4.跨表关联批量更新 在更新数据时可能需要跨表关联更新数据可以使用 JOIN 操作或子查询来实现。### 需要注意的事项1.事务处理在批量更新数据时尤其是跨表更新或更新涉及到重要数据时建议使用事务进行处理以确保数据的一致性并能够回滚到之前的状态。2.性能优化在进行批量更新时要注意数据库性能避免锁表或对性能造成影响。可以考虑分批次更新数据、创建索引以提升查询效率等方式进行性能优化。3.备份数据在进行批量更新操作前务必备份数据以防操作失误或更新错误导致数据丢失。4.避免影响其他操作在更新大量数据时可能会占用数据库资源影响其他操作。建议在低负载时段执行批量更新操作以减少对其他操作的影响。5.注意更新条件确保更新操作的条件准确避免将不需要更新的数据一并更新。文章推荐----【Sql server】假设有三个字段a,b,c 以a和b分组如何查询a和b唯一但是c不同的记录【Sql Server】新手一分钟看懂在已有表基础上修改字段默认值和数据类型【数据库】Sql Server数据迁移处理自增字段赋值【数据类型】C#和Sql Server、Mysql、Oracle等常见数据库的数据类型对应关系 总结温故而知新不同阶段重温知识点会有不一样的认识和理解博主将巩固一遍知识点并以实践方式和大家分享若能有所帮助和收获这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。