zoukankan      html  css  js  c++  java
  • 4.9 当相应行存在时更新

    问题:
    仅当另一个表中相应的行存在时,更新某表中的一些行。例如,如果表emp_bonus中存在某位员工,则要将该员工的工资增加20%(在表emp中)。

    解决方案:
    为了可以将符合条件的员工工资增加20%,可以在update语句的where子句中使用子查询,用以找出哪些员工同时存在于表emp和emp_bonus中

    update emp set sal = sal*1.20
        where empno in (select empno from emp_bonus)


    讨论:
    子查询返回的结果集确定了在表emp中哪些行可以被更新。谓词in用来检验emp中的empno值是否包含在由子查询返回的empno值列表当中,在此列表中时,相应的sal值被更新。

    还可以使用exists子句来替代in:

    update emp
        set sal = sal * 1.20
    where exists (
        select null from emp_bonus 
            where emp.empno = emp_bonus.empno
    )  


    读者可能会奇怪在exists子查询中select列表中的NULL值,不要惊讶,NULL值对更新操作没有任何不利影响,我认为这样既增加了该语句的可读性,而且还强调了一个事实:与使用in操作符的查询不同,使用exists的解决方案中,由子查询的where子句决定要更新哪些行,而不是由子查询的select列表中的值决定

  • 相关阅读:
    在已安装的PHP版本之间切换
    LDAP系列(一)完整的 LDAP + phpLDAPadmin安装部署流程
    如何关闭Windows自动更新
    win10安装SDK、JAVA、Python配置环境变量
    怎么看懂接口文档
    全面解析 Postman 工具
    API接口监控
    jmeter面试题
    Navicat for MySQL 连接数据库
    Linux系统
  • 原文地址:https://www.cnblogs.com/liang545621/p/7518754.html
Copyright © 2011-2022 走看看