热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracleupdate语句简析

oracleupdate语句简析Sql代码createtableTEST_EMPLOYEES(IDNUMBER,NAMENVARCHAR2(50),SALARYNUMBER);insertintoTEST_EMPLOYEES(ID,NAME,SALARY)values(1,'张三',80

oracle update语句简析
 
Sql代码  
create table TEST_EMPLOYEES(ID NUMBER,NAME NVARCHAR2(50),SALARY NUMBER);  
insert into TEST_EMPLOYEES (ID, NAME, SALARY) values (1, '张三', 8000);  
insert into TEST_EMPLOYEES (ID, NAME, SALARY) values (2, '李四', 7000);  
insert into TEST_EMPLOYEES (ID, NAME, SALARY) values (3, '王五', 9000);  
create table TEST_EMPLOYEES2(ID NUMBER,NAME NVARCHAR2(50),SALARY NUMBER);  
insert into TEST_EMPLOYEES2 (ID, NAME, SALARY) values (1, '张三', 8000);  
insert into TEST_EMPLOYEES2 (ID, NAME, SALARY) values (2, '李四', 17000);  
insert into TEST_EMPLOYEES2 (ID, NAME, SALARY) values (3, '王五', 19000);  
  www.2cto.com  
Sql代码  
update test_employees te  
   set salary =  
       (select te2.salary  
          from test_employees2 te2  
         where te.id = te2.id);  
Sql代码  
update test_employees te  
   set (te.name, te.salary) =  
       (select te2.name, te2.salary  
          from test_employees2 te2  
         where te.id = te2.id  
           and NVL(te.salary, 0) != nvl(te2.salary, 0))  
 where exists (select te2.salary  
          from test_employees2 te2  
         where te.id = te2.id  
           and nvl(te.salary, 0) != te2.salary);  
 
注:update 的 where 条件必须要,否则当and NVL(te.salary, 0) = nvl(te2.salary, 0)) 都相等时,返回的结果集为空,update会更新test_employees全表的name,salary为空
 
上边SQL语句的另外一种写法:注,两个表必须要有主键,没有会导致查询出的结果集无主键,会提示 “无法修改与非键值保存表对应的列”
 
Sql代码  
update (select te.salary, te2.salary new_salary  
          from test_employees te, test_employees2 te2  
         where te.id = te2.id  
           and te.salary != te2.salary)  
   set salary = new_salary;  
   www.2cto.com  
同时set也可以是多列,如下:
Sql代码  
update (select te.salary, te2.salary new_salary, te.name, te2.name new_name  
          from test_employees te, test_employees2 te2  
         where te.id = te2.id  
           and te.salary != te2.salary)  
   set salary = new_salary, name = new_name;  
 

推荐阅读
  • 一关于t1表和testtb的索引设计二把主键放到二级索引的后面,会否占据更多的物理空间?三InnoDB的主键该如何选择,业务ID和自增 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • 本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ... [详细]
  • 在尝试将 mysqldump 文件加载到新的 MySQL 服务器时,遇到因使用保留关键字 'table' 导致的语法错误。 ... [详细]
  • 阿里面试题解析:分库分表后的无限扩容瓶颈与解决方案
    本文探讨了在分布式系统中,分库分表后的无限扩容问题及其解决方案。通过分析不同阶段的服务架构演变,提出了单元化作为解决数据库连接数过多的有效方法。 ... [详细]
  • 本文详细介绍了如何将Spring框架与Hibernate ORM框架进行集成,包括配置文件的设置和数据持久化操作的实现。 ... [详细]
  • 如何将两个具有相同主键的Excel表格合并
    本文介绍如何将两个具有相同主键的Excel表格进行合并,通过左连接的方式将表2的数据插入到表1中。具体步骤包括在表1中添加新的列、使用VLOOKUP函数进行数据匹配,以及通过SQL语句实现数据库中的表连接。 ... [详细]
  • 解决Win7安装SQL Server时NetFx3启动失败的问题
    在使用Win7系统安装SQL Server时,部分用户可能会遇到“启动Windows功能NetFx3时出错”的提示。本文将详细介绍这一问题的原因及解决方法。 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 本文讨论了在 Oracle 10gR2 和 Solaris 10 64-bit 环境下,从 XMLType 列中提取数据并插入到 VARCHAR2 列时遇到的性能问题,并提供了优化建议。 ... [详细]
  • 本文探讨了在 SQL Server 2012 的 Integration Services 项目中配置 ADO.NET 源时遇到的错误及其解决方案。 ... [详细]
  • MongoDB核心概念详解
    本文介绍了NoSQL数据库的概念及其应用场景,重点解析了MongoDB的基本特性、数据结构以及常用操作。MongoDB是一个高性能、高可用且易于扩展的文档数据库系统。 ... [详细]
  • 数据仓库ETL开发过程中,如何有效进行测试是一个关键问题。由于数据仓库通常包含大量数据,并且出于安全考虑,开发库和测试库的数据与生产库不完全一致,这给测试带来了挑战。本文将探讨适用于ETL开发的测试方法,包括单元测试、集成测试以及具体测试技术。 ... [详细]
  • 周排行与月排行榜开发总结
    本文详细介绍了如何在PHP中实现周排行和月排行榜的开发,包括数据库设计、数据记录和查询方法。涉及的知识点包括MySQL的GROUP BY、WEEK和MONTH函数。 ... [详细]
  • 如何在不同数据库中提取前N%的记录
    本文详细介绍了如何在SQL Server、Oracle和MySQL等不同数据库中提取前N%的记录。通过具体的示例和代码,帮助读者理解和掌握这些方法。 ... [详细]
author-avatar
可可伦-惊叹号
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有