在UPDATE语句中可以在更新列表中以及WHERE语句使用子查询。下面演示一个将图书的出版日期全部更新为所有图书中的最新出版日期,SQL语句如下:


UPDATE T_Book SET FYearPublished=(SELECT MAX(FYearPublished) FROM T_Book)

注意,在MYSQL 中是不支持使用子查询来更新一个列的,所以这个UPDATE 语句无法在MYSQL中执行。

执行完毕查看T_Book表中的内容:


FID FNAME FYEARPUBLISHED FCATEGORYID 1 About J2EE 2008 4 2 Learning Hibernate 2008 4 3 Two Cites 2008 1 4 Jane Eyre 2008 1 5 Oliver Twist 2008 1 6 History of China 2008 2 7 History of England 2008 2 8 History of America 2008 2 9 History of TheWorld 2008 2 10 Atom 2008 3 11 RELATIVITY 2008 3 12 Computer 2008 3 13 Astronomy 2008 3 14 How To Singing 2008 5 15 DaoDeJing 2008 6 16 Obedience toAuthority 2008 6

如果UPDATE语句拥有WHERE子句,那么还可以在WHERE子句中使用子查询,其使用方式与SELECT语句中的子查询基本相同,而且也可以使用相关子查询等高级的特性。

下面的SQL语句用来将所有同类书本书超过3 本的图书的出版日期更新为2005:


UPDATE T_Book b1 SET b1.FYearPublished=2005 WHERE ( SELECT COUNT(*) FROM T_Book b2 WHERE b1. FCategoryId=b2. FCategoryId )>3

上面的SQL 语句使用相关子查询来查询所有与待更新的书籍属于同类别的书籍的总数,如果总数大于3则将当前书籍的出版日期更新为2005。

执行完毕查看T_Book表中的内容:


FID FNAME FYEARPUBLISHED FCATEGORYID 1 About J2EE 2008 4 2 Learning Hibernate 2008 4 3 Two Cites 2008 1 4 Jane Eyre 2008 1 5 Oliver Twist 2008 1 6 History of China 2005 2 7 History of England 2005 2 8 History of America 2005 2 9 History of TheWorld 2005 2 10 Atom 2005 3 11 RELATIVITY 2005 3 12 Computer 2005 3 13 Astronomy 2005 3 14 How To Singing 2008 5 15 DaoDeJing 2008 6 16 Obedience toAuthority 2008 6

子查询在UPDATE 语句中的应用的更多相关文章

  1. MySQL Execution Plan--IN子查询对UPDATE语句影响

    问题描述 在系统中发现一条执行时间为为44652.060734秒(12.5小时)的慢SQL,SQL语句为: UPDATE ob_internal_task SET OPERATE_STATUS WHE ...

  2. 子查询在DELETE语句中的应用

    子查询在DELETE 中唯一可以应用的位置就是WHERE 子句,使用子查询可以完成复杂的数据删除控制.其使用方式与SELECT 语句中的子查询基本相同,而且也可以使用相关子查询等高级的特性.下面的SQ ...

  3. 子查询在INSERT语句中的应用

    在使用INSERT语句的时候,一般都是使用它向数据库中一条条的插入数据,比如: INSERT INTO MyTable(FId,FName,FAge)VALUES(1,"John" ...

  4. 在update语句中使用子查询

    在update 中的 where 子句中使用子查询: UPDATE mg_page_log as a  SET  page_num=1 WHERE id in( SELECT id  from mg_ ...

  5. sql子查询 嵌套SELECT语句

    嵌套SELECT语句也叫子查询,一个 SELECT 语句的查询结果能够作为另一个语句的输入值.子查询不但能够出现在Where子句中,也能够出现在from子句中,作为一个临时表使用,也能够出现在sele ...

  6. mssql sql高效关联子查询的update 批量更新

    /* 使用带关联子查询的Update更新     --1.创建测试表 create TABLE Table1     (     a varchar(10),     b varchar(10),   ...

  7. UPDATE语句中SET部分列赋值的先后顺序有影响么?

    昨天研发同事问我个问题,UPDATE语句中SET部分列赋值的先后顺序会影响结果么?以前没考虑过这个问题,因为通常我们都会UPDATE时给列赋予一个确定的值,而不是一个依赖于其他列的值. 测试环境: D ...

  8. 输出,变量的使用,子查询,逻辑语句,循环,case..when..then..end多分支语句,Exists(判断存在)

    --------------输出----------------print 'hello world'--以文本形式输出select 'hello world'--以网格形式输出,也可以设置成以文本形 ...

  9. where EXISTS (子查询)多对多中通过中间表查对方列表

    用户表A,小组表B,小组和用户是多对多关系,中间有个中间表M 已知 小组 id 即teamId ,想知道这个小组中的用户列表信息,可以如下写sql: select * from A a where E ...

随机推荐

  1. Tomcat启动报错:org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalin

    Error starting ApplicationContext. To display the auto-configuration report re-run your application ...

  2. 深入理解Spring MVC(山东数漫江湖)

    初始工程 使用Spring Boot和web,thymeleaf的starter来设置初始工程.xml配置如下: <parent>   <groupId>org.springf ...

  3. 往Layout中动态添加View

    需要注意几个方法:基本上所有的方法参数单位是px 1.设置View的宽高: LinearLayout.LayoutParams params = new LinearLayout().LayoutPa ...

  4. Ribbon的主要组件与工作流程

    一:Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接 ...

  5. SQL中判断值是否为NULL

    在 SQL 中,我们如果在操作数据库时使用 WHERE 子句判断一个列的值是否为 NULL,我们不能够使用 column_name=null 来进行判断,这是不正确的,我们应该使用 is null 来 ...

  6. jps命令学习

    jps命令学习 标签(空格分隔): jvm jps介绍 ( JVM Process Status Tool ) 网文 jps命令用于查看当前Java进程及其pid等相关信息,同ps -ef | gre ...

  7. gridcontrol的列头右键菜单问题

    Dev控件GridControl设置了一个右键菜单 this.gridControl1.ContextMenu = contextMenu2; 而GridControl在运行排序的时候,即 gridv ...

  8. virtualenv--创建虚拟环境

    一.virtualenv 优点 1.使用不同应用开发环境独立 2.环境升级不影响其他应用,也不会影响全局的python 环境二.安装 pip install virtualenv 三.使用virtua ...

  9. 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献中 ...

  10. Intersection of Two Linked Lists——经典问题

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...