也许是被忽略的update语句
呵呵,园里的兄弟我又来写简单的文章了,希望大家不吝赐教。这次要说的是sql里面的update语句。说到这里,肯定会有很多兄弟不满意了,不就是update语句吗?谁不会写啊,update table set column=expression [where search_condition 啊。
但真的update语句就仅仅这样吗?它的精髓它的原理是什么呢?我们通过例子来说明:
假设有一张成绩表,只有两个字段,姓名和成绩。怎样用一个sql语句查询出某个学生的姓名,成绩以及在表中的排名?
呵呵,这个问题是上次我发过的,详情见http://www.cnblogs.com/jimmyhsu/archive/2005/03/03/111884.aspx
结果可以去那里看。现在改改问题,假设这张成绩表有三个字段,姓名、成绩和排名,现在只有姓名和成绩有值,怎样将他们的排名更新上去呢?
有朋友可能会提出类似解决方案:先还是用查询语句查询出来,然后通过游标更新排名。
有没有更好的解决方案呢?当然是有的,答案就是用update语句。
update 成绩表 set 排名=(select count(*)+1 from 成绩表 where a.成绩<成绩)
from 成绩表 a
可以看到,只用一个语句就实现了。同时我们也可以发现它跟我们平常写的update语句不同,多了from。其实update语句的原理和select语句很类似,完整的update语句应该是update table set column=expression from table [where search_condition] ,可见后面的一截完全就是个查询语句。当update的table和查询的table(也就是from后面的table)完全一致的时候则可以省略,写成我们最常见的update table set column=expression [where search_condition] 。
上面仅仅是举了个例子来说明update的用法,真正在开发的时候,灵活恰当地使用update可以达到事半功倍的效果哦。
转载于:https://www.cnblogs.com/jimmyhsu/archive/2005/05/24/161387.html
也许是被忽略的update语句相关推荐
- 动手为王:由一条UPDATE语句引发的一波三折深入实践(含PPT)
关注我们获得更多精彩 编辑说明:这篇文章源自我几年前的一个演讲,当时我在『甲骨文技术大会』分享了一个关于SQL的主题,其中的一个案例推演了几个步骤,后来本文作者『刘晨』做了验证.实验,并且分享在他的博 ...
- ORACLE 多表关联 UPDATE 语句
为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, SQL 代码 --客户资料表 create table customers ( customer_id num ...
- 数据库中Select For update语句的解析
----------- Oracle -----------------– Oracle 的for update行锁 键字: oracle 的for update行锁 SELECT-FOR UPDAT ...
- java sql update用法_使用if else条件将SQL UPDATE语句转换为php(codeigniter)
condition 3: a. LAMA 和 ESTIMASI 均为空 . b. LAMA 为空 c. ESTIMASI 为空 如果要根据 LAMA 和 ESTIMASI 的值更新表中的所有行,可以使 ...
- 多表关联的update语句
MSSql的多表关联的update语句 例如A表 存在一下字段: AID A1 A2 A3 A4 B表中存在字段: BID B1 B2 B3 B4 如果实现用B表的所有字段更新A表中相应的字段,在MS ...
- oracle动态update语句
1.今天公司项目提交更新表单出错,这个bug交给了我. 2.OK,debugger一下,发现提交的时候后台打印出错,提示大概就是这样 SQLException '17004' 其实很简单,这种错误 ...
- SQL Server UPDATE语句用于更新数据
SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用 ...
- Access update语句 提示 操作必须使用一个可更新的查询Access update语句 提示 操作必须使用一个可更新的查询
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.cr ...
- 数据库中update怎么用事例_〔数据库〕— UPDATE语句的使用
[TOC] 1.总体原则 1)更新的时候一定要加where条件,否则必然引起该字段的所有记录更新 2)跨表更新时,set和where时,尽量减少扫描次数,从而提高优化 为了方便起见,建立了以下简单模型 ...
最新文章
- mongodb-创建索引
- PHP之高性能I/O框架:Libevent(二)
- POJ 2152 Fire(树形DP)
- Visual C++——黄维通《 Visual C++面向对象与可视化程序设计》——例题9-3
- 密度聚类dbscan_DBSCAN —基于密度的聚类方法的演练
- 如果你扯了团队后腿,你应该内疚
- Centos7 Docker 目录挂载_入门试炼06
- realme Pad通过认证:搭载7100mAh大容量电池
- 功能丰富的Perl:用Perl读写Excel文件
- 安装nuxt_一天上手Nuxt基于vue服务端渲染
- Python代码实现验证码识别
- 微信编辑器有哪些呢?
- CDA数据分析师 - 备考指南
- 解决Github不能下载,下载速度慢的小妙招
- Win11热键冲突怎么解决?
- 最长的指定瑕疵度的元音字串 —— 最优解法(C++实现)
- NO.35——qq音乐全站分布式爬虫(一)
- Dubbo源码分析(三) -- Dubbo的服务发现源码深入解析4万字长文
- element-ui弹出层置于遮罩层下面问题
- 利用Cookie显示上次登录时间
热门文章
- poj1548 Robots
- linux搭建--ubuntu使用qemu-kvm,libvirt搭建虚拟机,并搭建libvmi来虚拟机自省(三)
- vue filter对象_学习vue源码(3) 手写Vue.directive、Vue.filter、Vue.component方法
- python批量分析表格_示例python 批量操作excel统计销售榜品牌及销售额
- sap系统操作流程财务软件_金蝶财务软件的操作流程汇总
- PCB设计用什么软件好?
- Mac-连接Windows远程桌面软件
- Spring Boot实践--CommandLineRunner接口
- mysql 主主+ Keepalived 高可用
- 团队-及格成绩查询系统-设计文档