Update card a
Set
(card_limit,open_date)=
(Select b.card_limit,b.issue_date From etl_cardinfo b Where a.card_number = b.card_no)
Where Exists (Select 1 From card a,etl_cardinfo b Where a.card_number = b.card_no)
总是报错说:ora-01407:can't set card.card_limit to null
于是改为
Update card a
Set open_date =(Select issue_date From etl_cardinfo b Where a.card_number = b.card_no)
,
card_limit=nvl(Select b.card_limit From etl_cardinfo b Where a.card_number = b.card_no,a.card_limit)
Where Exists (Select 1 From card a,etl_cardinfo b Where a.card_number = b.card_no)
现在报错:ora-00936:missing expression。干脆语法错误了。
看了半天后才发现,都是犯了两个愚蠢的小错误。
正确的写法是:
Update card a
Set
(card_limit,open_date)=
(Select b.card_limit,b.issue_date From etl_cardinfo b Where a.card_number = b.card_no)
Where Exists (Select 1 From etl_cardinfo b Where a.card_number = b.card_no)
exists里面不用card a,如果是from a,b的话就不再是是子查询了,要么是存在要么是不存在,和where 1=1和where 1<>1一样了。
第二个的写法是:
Update card a
Set open_date =(Select issue_date From etl_cardinfo b Where a.card_number = b.card_no),
card_limit=
nvl((Select b.card_limit From etl_cardinfo b
Where a.card_number = b.card_no),a.card_limit)
Where Exists (Select 1 From etl_cardinfo b Where a.card_number = b.card_no)
nvl里面的select * from X 必须括号起来
分享到:
相关推荐
Oracle数据库中的多表关联UPDATE语句是用于在一个表中更新数据时,依据另一个表的条件进行操作的关键技术。这在处理复杂的数据同步或修正场景时非常有用。在本例中,我们将探讨如何利用多表关联来更新数据,并通过...
在Oracle数据库中,多表关联的UPDATE语句用于更新一个表中的数据,这些数据依赖于另一个或多个表的记录。这种操作在数据整合、错误修正或者数据同步时非常常见。以下我们将详细探讨如何使用不同方式执行多表关联的...
标准 Update 语句是 Oracle 中最基本的更新语句,语法为:`UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值`。例如:`UPDATE t_join_situation SET join_state='1' WHERE year='2011'`。这种方式适用于更新...
### 数据库Oracle锁:FOR UPDATE OF与FOR UPDATE的区别 在Oracle数据库中,为了确保数据的一致性和准确性,尤其是在多用户环境中进行并发操作时,锁机制是必不可少的一部分。本文将详细介绍`FOR UPDATE`与`FOR ...
这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。由于我的java程序...
在本篇文档中,作者详细总结了在实际项目中针对Oracle数据库的update语句优化的四种方案。以下是对这四种方案的知识点进行详细的阐述: 1. 标准update语法优化: 当面对单表更新或较简单的SQL语句时,可以直接使用...
- **关联UPDATE**:如果关联涉及的列都有索引,且数据量适中,性能通常优于全表扫描。但关联操作可能涉及更多的磁盘I/O和CPU计算,所以对于非常大的表,性能可能下降。 - **子查询UPDATE**:如果子查询能够快速返回...
UPDATE 表2 SET 表2.C = (SELECT B FROM 表1 WHERE 表1.A = 表2.A) WHERE EXISTS (SELECT 1 FROM 表1 WHERE 表1.A = 表2.A); 尤其注意最后的外层where条件尤为重要,是锁定其批量更新数据的范围。 方法二: ...
DataX-Oracle新增writeMode支持update的两个jar包已经修改好,使用方法可以看https://blog.csdn.net/qq_36802726/article/details/137118015
### ORACLE UPDATE 语句语法与性能分析 #### 引言 在数据库管理与操作中,`UPDATE`语句是SQL语言中极为重要的组成部分,它允许我们修改已存在的记录,从而保持数据的时效性和准确性。Oracle数据库作为企业级应用中...
Oracle Server JRE 7 Update 55 是Oracle公司发布的一款针对Java运行环境(Java Runtime Environment)的更新版本,主要用于在Windows x64平台上支持Oracle服务器的运行。JRE是Java应用程序能够在任何兼容的计算机上...
在Oracle数据库中,进行多表关联的批量插入、批量更新和批量删除操作是常见的数据库管理任务,尤其是在处理大量数据时,这些操作能显著提高效率并减少资源消耗。本文将详细探讨这三个方面,并通过实例代码来展示如何...
Oracle 多表 Update 语句详解 在 Oracle 中,Update 语句是数据库操作中的重要组成部分。 Update 语句可以对数据库中的数据进行修改,更新和插入。今天,我们将讨论 Oracle 中的 Update 语句,包括 Update 语句的...
### Oracle两表关联更新知识点详解 #### 一、Oracle关联更新概述 在Oracle数据库中,进行数据更新操作时,有时需要根据另一个表中的数据来更新当前表的数据,这就是所谓的“关联更新”。关联更新通常用于保持两个...
shell连接oracle数据库工具脚本:支持select/insert/update/delete 部署位置:/root/sysmonitor db:数据库文件夹 dbconfig.properties:数据库配置文件, dbConnectTest.sh:连接测试文件 dbExecurteSQL.sh:...
Skyline与Oracle数据库坐标关联之Oracle数据库操作说明 数据库操作是指在Skyline与Oracle数据库坐标关联中执行的一系列操作,以确保坐标数据的正确性和一致性。在本文中,我们将详细介绍Skyline与Oracle数据库坐标...
根据给定的文件信息,我们可以深入探讨Oracle数据库中关于关联查询的知识点,特别是与学生信息表(`tt_student`)和评估规则表(`tt_assess_rule`)相关的操作。 ### Oracle测试题中的关联查询 #### 数据表创建与...
Oracle 基础查询关联查询练习题 Oracle 基础查询关联查询练习题中涉及到多种查询类型,包括基础查询、关联查询、分组查询等。下面我们将对每个练习题的知识点进行详细解释。 1. 基础查询 基础查询是指从数据库中...
本资料“ORACLE ebs 各模块核心表关联”旨在帮助用户理解和掌握EBS系统中的数据结构和表间关系。 首先,我们来看财务管理模块,主要包括总账、应付账款、应收账款、固定资产管理等子模块。例如,总账模块的核心表有...
在Oracle数据库中,`UPDATE NOWAIT` 是一个用于事务处理的关键字,它允许你更新一行数据,但在数据被其他事务锁定时,它不会等待而是立即返回一个错误信息。这个特性对于处理多线程并发和确保数据一致性至关重要。...