也许是被忽略的update语句(update技巧)

 更新时间:2014年08月17日 10:57:37   投稿:mdxy-dxy  
这篇文章主要介绍了也许是被忽略的update语句,update语句就仅仅这样吗?它的精髓它的原理是什么呢?我们通过例子来说明

呵呵,园里的兄弟我又来写简单的文章了,希望大家不吝赐教。这次要说的是sql里面的update语句。说到这里,肯定会有很多兄弟不满意了,不就是update语句吗?谁不会写啊,update table set column=expression [where search_condition 啊。

但真的update语句就仅仅这样吗?它的精髓它的原理是什么呢?我们通过例子来说明:
假设有一张成绩表,只有两个字段,姓名和成绩。怎样用一个sql语句查询出某个学生的姓名,成绩以及在表中的排名?
呵呵,这个问题是上次我发过的,详情见 https://www.jb51.net/article/53832.htm
结果可以去那里看。现在改改问题,假设这张成绩表有三个字段,姓名、成绩和排名,现在只有姓名和成绩有值,怎样将他们的排名更新上去呢?

有朋友可能会提出类似解决方案:先还是用查询语句查询出来,然后通过游标更新排名。
有没有更好的解决方案呢?当然是有的,答案就是用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可以达到事半功倍的效果哦。

相关文章

  • SQL 注入式攻击的本质

    SQL 注入式攻击的本质

    SQL 注入式攻击,又是注入式攻击,没想到2008年这个老掉牙的东西又出来搅风搅雨
    2008-12-12
  • 5分钟快速了解数据库死锁产生的场景和解决方法

    5分钟快速了解数据库死锁产生的场景和解决方法

    这篇文章主要给大家介绍了关于如何通过5分钟快速理解数据库死锁的相关资料,文中介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 几种常用DB驱动和DB连接串小结

    几种常用DB驱动和DB连接串小结

    几种常用DB驱动和DB连接串,方便大家用各种程序,连接数据库。
    2009-12-12
  • 干掉Navicat,这个数据库管理工具真香

    干掉Navicat,这个数据库管理工具真香

    这篇文章主要介绍了干掉Navicat,这个数据库管理工具真香,本文详细的介绍DataGrip的具体使用方法和实现,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 使用Navicat导入和导出sql语句的图文教程

    使用Navicat导入和导出sql语句的图文教程

    Navicat是MySQL非常好用的可视化管理工具,功能非常强大,能满足我们日常数据库开发的所有需求,下面这篇文章主要给大家介绍了关于使用Navicat导入和导出sql语句的相关资料,需要的朋友可以参考下
    2023-03-03
  • sql join on 用法

    sql join on 用法

    非常不错使用join on实现数据库字段的连接输出效果。
    2009-07-07
  • SQL语句中公共字段的自动填充方法

    SQL语句中公共字段的自动填充方法

    这篇文章主要给大家介绍了关于SQL语句中公共字段的自动填充方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • PostgreSQL8.3.3安装方法

    PostgreSQL8.3.3安装方法

    非安装版的PostgreSQL8.3.3的首次使用经历第一次用Postgre,已经是好多年以前了,隐约记得是在linux下边,build半天,然后手动配置库文件之类。
    2008-09-09
  • 图文详解HTTP头中的SQL注入

    图文详解HTTP头中的SQL注入

    HTTP头字段是超文本传输协议(HTTP)中请求和响应的部分信息,它们定义了HTTP传输的操作参数,下面这篇文章主要给大家介绍了关于HTTP头中SQL注入的相关资料,需要的朋友可以参考下
    2021-12-12
  • 特殊的存储过程-触发器概述

    特殊的存储过程-触发器概述

    一直都不知道触发器的具体应用,今天看到一篇触发器的解释文章
    2008-04-04

最新评论