`
liumiao2011
  • 浏览: 52826 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle中update...select

 
阅读更多

比如有两张表

 

USER_CHINESE

ID ZHONGWEN

1 张三

2 李四

3 王五

 

USER_ENGLISH
ID PINYIN
1 zhangsan
2 lisi
4 liuliu

现在我想让USER_CHINESE表中的汉字变成拼音。

sql语句是:
update USER_CHINESE t1
set t1.zhongwen = (select t2.pinyin from USER_ENGLISH t2 where t2.id = t1.id);

这时候,你可能觉得应该update两条。
可是结果是:3条被更新。

看结果:
USER_CHINESE
ID ZHONGWEN
1 zhangsan
2 lisi
3

真的是更新了三条。
由于id=3的没有匹配上,所以id=3的记录的ZHONGWEN字段改成null了。
所以,这点一定要注意。

记住:如果update或delete没有where条件,则一定是全表更新的。

如果你不想更新id=3的记录。sql语句可以这样写:
update USER_CHINESE t1
set t1.zhongwen = (select t2.pinyin from USER_ENGLISH t2 where t2.id = t1.id)
where t1.id ! = 3;
这个时候结果是:2条被更新。
USER_CHINESE
ID ZHONGWEN
1 zhangsan
2 lisi
3 王五

但是,如果我们每次都在update之前都先找一下匹配不上的id,然后加到where条件中,这样肯定不行。
所以,如果你想让能匹配上的记录更新,匹配不上的记录保持不变。sql语句应该这样写:
update USER_CHINESE t1
set t1.zhongwen = nvl((select t2.pinyin from USER_ENGLISH t2 where t2.id = t1.id),t1.zhongwen);
这个时候结果是:3条被更新。
USER_CHINESE
ID ZHONGWEN
1 zhangsan
2 lisi
3 王五
达到目的了。注意这个时候是3条被更新,不是两条。

分享到:
评论

相关推荐

    Oracle.ManagedDataAccess.dll.rar

    5. **执行SQL**: 使用OracleCommand对象执行SQL语句,可以是SELECT、INSERT、UPDATE或DELETE等。 6. **处理结果集**: 如果是查询语句,可以使用OracleDataReader或OracleDataAdapter来获取和处理结果集。 7. **...

    oracle的update的五种方式

    标准 Update 语句是 Oracle 中最基本的更新语句,语法为:`UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值`。例如:`UPDATE t_join_situation SET join_state='1' WHERE year='2011'`。这种方式适用于更新...

    Oracle.DataAccess.Client_dll

    `OracleCommand`类可以用来执行SQL命令,包括SELECT、INSERT、UPDATE和DELETE,以及调用存储过程。 在C#中使用Oracle.DataAccess.Client.dll,开发者需要首先安装Oracle的数据提供程序,通常通过NuGet包管理器来...

    cx_Oracle-5.1.2.tar.gz

    3. **SQL和PL/SQL支持**:通过cx_Oracle,开发者可以执行各种SQL查询,包括SELECT、INSERT、UPDATE和DELETE等操作。此外,还支持Oracle特有的PL/SQL过程和函数。 4. **参数绑定**:为了防止SQL注入攻击,cx_Oracle...

    Oracle.ManagedDataAccess.rar

    Oracle.ManagedDataAccess是Oracle公司为.NET Framework提供的一款完全托管的数据访问组件,它允许开发者在C#等.NET语言中直接连接Oracle数据库,而无需安装传统的Oracle客户端软件。这个压缩包包含的就是Oracle ...

    oracle-sql.rar_oracle

    这可能包括了如何选择(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)数据,以及如何使用聚合函数(如COUNT、SUM、AVG、MAX、MIN)进行数据统计。此外,还可能涉及到了更高级的查询技巧,如联接(JOIN...

    数据库oracle for update of和for update的区别

    通过上述示例我们可以看出,在Oracle数据库中,`FOR UPDATE OF`提供了更细粒度的锁定控制能力,从而提高了系统的并发性能。在设计并发处理逻辑时,合理利用这些特性可以帮助提高系统的整体效率。

    Oracle.Data.Access.Components.v6.80.0.47.FS.forD5-D2009

    这些组件提供了一种直观的方式来运行 SELECT、INSERT、UPDATE 和 DELETE 语句,同时也支持存储过程和游标。 3. **数据绑定** ODAC 组件可以轻松地与 Delphi 的 VCL(Visual Component Library)控件绑定,如 ...

    .Net连接Oracle

    在.NET开发环境中,Oracle数据库是常用的后端存储系统之一,为应用程序提供数据支持。这篇教程将详细介绍如何在.NET中建立与Oracle数据库的连接,并实现分页功能。首先,我们需要了解.NET Framework或.NET Core中...

    oracle四大宝典.rar

    这包括SELECT语句的复杂用法,如联接、子查询、聚合函数和分组,以及DML(Data Manipulation Language)操作,如INSERT、UPDATE、DELETE。此外,了解PL/SQL,Oracle的扩展SQL语法,对于编写存储过程、函数和触发器也...

    oracle执行update语句时卡住问题分析及解决办法

    这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。由于我的java程序...

    update语句的优化-oracle .pdf

    在本篇文档中,作者详细总结了在实际项目中针对Oracle数据库的update语句优化的四种方案。以下是对这四种方案的知识点进行详细的阐述: 1. 标准update语法优化: 当面对单表更新或较简单的SQL语句时,可以直接使用...

    Oracle Database 12.1.0.1 JDBC Driver

    2. **执行SQL语句**:通过`java.sql.Statement`或`java.sql.PreparedStatement`对象执行SQL查询、更新(如INSERT、UPDATE、DELETE)和存储过程。 3. **处理结果集**:`java.sql.ResultSet`对象用于存储查询结果,...

    Oracle-SQL.rar_oracle_oracle sql_sql

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,尤其在企业级应用中占据着重要地位。SQL(Structured Query Language)则是与关系数据库交互的语言,是管理、查询和操作数据库的基础工具。对于初学...

    DDTek.Oracle oracle 无客户端直联,带授权

    2. 执行SQL查询:发送SELECT语句获取数据,或者使用INSERT、UPDATE、DELETE语句修改数据库中的记录。 3. 高级数据库操作:支持存储过程的调用,事务管理,以及批量数据操作。 4. 错误处理和异常处理:库会封装Oracle...

    C#连接oracle数据库实例

    在Visual Studio中,打开项目,右键点击“管理NuGet程序包”,在搜索框中输入“Oracle.ManagedDataAccess”,然后选择并安装。 安装完成后,就可以编写代码来连接Oracle数据库了。以下是一个简单的示例: ```...

    oracle_train.zip

    接下来,文档可能会深入到Oracle的SQL语法,包括如何创建、修改和删除数据库对象(如表、视图、索引等),以及如何使用DML语句(INSERT、UPDATE、DELETE)进行数据操作。还会讲解查询语言(SELECT)的复杂用法,如...

    Oracle_SQL.rar_oracle

    Oracle SQL是数据库管理中不可或缺的一部分,它用于在Oracle数据库系统中执行数据查询、操作和管理。这个名为"Oracle_SQL.rar_oracle"的压缩包显然包含了关于Oracle SQL的详细教程或代码示例,其中的"Oracle_SQL.sql...

    shell连接oracle数据库执行SQL工具脚本-支持select+inset+update

    shell连接oracle数据库工具脚本:支持select/insert/update/delete 部署位置:/root/sysmonitor db:数据库文件夹 dbconfig.properties:数据库配置文件, dbConnectTest.sh:连接测试文件 dbExecurteSQL.sh:...

Global site tag (gtag.js) - Google Analytics