-
oracle能用一条sql做判断吗?0
比如我有三张表A B C,A里字段id是B和C里的外键,我想做的效果是查询A表某个id,如果这个id存在于B表就查询B表的数据,如果不存在就查询C表的数据,不用存储过程单SQL能写出来不?
问题补充:补充下,这个A表的ID可能不只一个,而是一次数组2013年7月01日 16:38
7个答案 按时间排序 按投票排序
-
采纳的答案
如果A表对B、C表的关系是一对一,那建议采取dzwfeng的方式;
如果是一对多,左连接就会出现B,C表笛卡尔积,因为B,C表之间没有关联关系;
这种情况建议使用union,如:
select A.id,B.name
from A inner join B on A.id=B.id
union
select A.id,C.name
from A inner join C on A.id=C.id
注:是否使用union all决定于你的具体需求
2013年7月02日 12:56
-
在oracle可以用左关联,A和B,C关联,取B表的数据,如果B这个字段数据为空就取C表对应字段的数据。
select nvl(b.字段1,c.字段1)
from a,b,c
where a.id =b.id(+)
and a.id = c.id(+)2013年7月02日 08:59
-
1、如果查询的列数少 可以使用case when then
2、因为b/c二者选一,所以可以连表查 然后分组排重2013年7月01日 16:54
相关推荐
- **规范要求**:在PL/SQL中应当尽可能使用Oracle提供的内置函数,这不仅可以提高代码的性能,还能保证代码的可移植性和稳定性。 - **示例**: ```plsql SELECT TRUNC(SYSDATE) INTO v_date FROM DUAL; ``` ###...
EXISTS子句在找到至少一条符合条件的记录时就会返回TRUE,而不关心具体有多少条符合条件的记录;相反,NOT EXISTS子句则用于判断是否不存在符合条件的记录。 3. WITH子句,又称为公用表表达式(Common Table ...
这意味着当执行一条与之前相同的SQL语句时,Oracle可以直接从缓存中获取结果,从而大大减少了执行时间。然而,Oracle只会缓存最近经常使用的SQL语句,并且如果缓存区已满,旧的SQL语句可能会被清除以腾出空间给新的...
例如,删除ROWID较大的重复记录,只保留ROWID最小的一条。 4. **使用TRUNCATE替代DELETE**:当需要清空表时,使用TRUNCATE命令比DELETE更快,因为它不涉及回滚段,不需要记录每一行的删除信息。然而,TRUNCATE是DDL...
### Oracle常用性能监控SQL语句知识点详解 #### 1. 监控高磁盘读取的SQL区域 ...每一条SQL语句都针对特定的问题进行了设计,通过对这些SQL语句的理解和应用,可以有效地提升数据库的性能并解决各种性能问题。
标题与描述均聚焦于SQL Server, Oracle, 和DB2数据库中的SQL语句比较,这是一个对IT专业人士特别是数据库管理员(DBA)、开发人员以及对数据库技术感兴趣的人来说极为实用的主题。以下是对给定文件中提及的关键知识点...
- `#`:删除 SQL 缓冲区中的最后一条命令。 - `$`:运行上一条命令。 - `/`:执行 SQL 缓冲区中的 SQL 命令。 - `ACCEPT`:提示用户输入值。 - `APPEND`:将输出追加到文件。 - `BREAK`:设置输出格式的断点。 - `...
总结来说,Oracle的数据库和SQL优化是一个涉及多个层面的综合过程,需要考虑数据库架构、数据存储方式、查询效率以及优化器的合理使用等多个方面的因素。通过对这些方面的综合考虑,可以显著提升Oracle数据库的性能...
7. **减少访问数据库的次数**:通过合并多个SQL语句为一个批处理,或者使用存储过程,减少网络往返和数据库的处理压力。 8. **使用DECODE函数来减少处理时间**:DECODE函数允许在SQL查询中直接进行简单的条件判断,...
当检查某条记录是否在另一查询结果中存在时,使用EXISTS通常比IN更高效,因为EXISTS只关心是否存在匹配,不关心匹配的数量。 **10. 用NOT EXISTS替代NOT IN** 类似地,对于否定条件,NOT EXISTS也通常优于NOT IN,...
#### 一、Oracle SQL优化的重要性 在系统开发初期,由于数据库数据量较小,可能不会明显感受到不同SQL语句编写方式带来的性能差异。然而,当系统投入实际应用,尤其是面对海量数据时,SQL语句的优化就显得尤为重要...
### Oracle开发DBA SQL编写规范 #### 1. 引言 本文档旨在为Oracle数据库开发者提供一套标准化的SQL及PL/SQL编写指南,通过规范化SQL及PL/SQL的编写方式,提高代码的可读性、可维护性和执行效率。本规范适用于所有...
例如,在给出的SQL语句中,`sys_connect_by_path(tname, ' ')`将`tname`字段的值连接起来,以空格分隔,形成一条路径,展示了数据的层次结构。 2. **CONNECT_BY_ISLEAF 伪列**: 自Oracle 10g起,`CONNECT_BY_...
1. **协调进程(Coordinator Process)**:当一条SQL语句被提交至数据库时,优化器首先对其进行分析,判断是否适合并行执行。如果决定并行,协调进程则负责调度并行服务器进程,管理任务分配和结果汇总。 2. **从属...
使用游标,可以实现条件判断和循环,对多条数据进行逐条处理。 3. **SQL 语句** SQL(Structured Query Language)是用于管理和操作关系数据库的标准语言。在 Oracle 中,SQL 语句包括 DDL(Data Definition ...
### 提高Oracle中SQL的执行效率 在Oracle数据库中,SQL查询性能的优化对于提升整个系统的响应速度至关重要。本文将详细介绍几种有效的方法来提高Oracle中SQL的执行效率,包括选择合适的表名顺序、优化WHERE子句中的...
- **分号结尾**:每条SQL语句通常以分号结尾。 - **关键字与标识符**:Oracle SQL中的关键字应全部使用大写字母书写,而表名、字段名等标识符则应使用小写字母或与数据库约定的格式一致。 #### 2. DISTINCT `...
### Oracle SQL性能优化技巧总结 #### 一、选择最有效率的表名顺序 在Oracle数据库中,SQL语句的执行顺序对查询性能有着显著的影响。对于基于规则的优化器而言,FROM子句中表的顺序至关重要。Oracle的解析器会按照...