http://seandeng888.iteye.com/blog/2110590 学习了
需求 查询用户对应的所有角色
用户A 角色1,角色2....
SELECT USER_CODE, LTRIM(MAX(sys_connect_by_path(ROLE_NAME, ',')), ',') VALS
from (select U.USER_CODE USER_CODE,
R.ROLE_NAME ROLE_NAME,
row_number() over(partition by USER_CODE order by USER_CODE) rn
FROM TB_EMM_USER U, TB_EMM_USER_ROLE UR, TB_EMM_ROLE R
WHERE U.USER_ID = UR.USER_ID
AND UR.ROLE_ID = R.ID)
start with rn = 1
connect by rn - 1 = prior rn
AND USER_CODE = PRIOR USER_CODE
group by USER_CODE
order by USER_CODE
分享到:
相关推荐
当需要删除表中的重复记录时,可以利用ROWID来唯一标识每一条记录。通过比较ROWID,可以确保每次仅删除一个重复记录,而不会误删其他非重复记录。 #### 9. TRUNCATE与DELETE的区别 TRUNCATE和DELETE都是用于删除表...
这种方式将分页条件放在了最外层,但通常情况下它的效率较低,因为Oracle无法将外层的`BETWEEN`条件推入内层,导致所有数据都要被处理,然后在外层进行过滤。 在涉及多表联合查询时,Oracle的查询优化器(CBO)可能...
如果多个简单的查询之间没有关联,可以尝试将它们合并到一个查询中。这样可以减少数据库的访问次数,进而提高整体性能。 #### 8. 删除重复记录 使用ROWID来高效地删除重复记录。例如: ```sql DELETE FROM EMP E ...
20. **将表放入keep缓存池**: - 使用`ALTER TABLE xxx STORAGE (BUFFER_POOL keep);`将表`xxx`的数据存储在keep缓存池中,提高访问速度。 21. **检查已安装的补丁**: - 通过检查`$ORACLE_HOME/patches`目录下的...
* 当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在 SELECT 子句中使用 DISTINCT * 使用>=替代〉,这样 DBMS 可直接跳到等于的记录上,可能会避免向前的扫描工作 * 用 union 替代 or,通常情况下...
- `DELETE`命令逐条删除记录,并记录每一条删除记录的动作,支持事务控制和触发器,但执行速度较慢且占用更多资源。 10. **使用COMMIT**:在执行完修改操作后,使用COMMIT命令提交更改非常重要。COMMIT操作将更改...
将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; ...
优化器扫描小表(或数据源),利用连接键(也就是根据连接字段计算hash值)在内存中建立hash表,然后扫描大表,每读到一条记录就来探测hash表一次,找出与hash表匹配的行。当小表可以全部放入内存中,其成本接近全表...
6. **整合简单查询**:即使没有直接关联,也可以将多个简单查询合并为一个,以减少数据库的交互。 7. **删除重复记录**:使用ROWID可以高效地删除重复记录,避免全表扫描。 8. **使用TRUNCATE替代DELETE**:对于...
开发者可以通过查询和记录导航功能轻松处理多条数据。 3. **事件驱动编程**:Form Builder支持事件驱动编程模型,即当用户执行某些操作(如点击按钮)时,会触发预定义或自定义的程序代码执行。这极大地增强了交互...
- **更新记录导致过大**: 在更新一条记录时,如果更新后的记录超过了单个数据块的存储容量,那么这条记录也将被分割成多个部分,并在多个数据块中链接存储。 **2. 行迁移的产生** - 当一条记录被更新且原始数据块...
通过将过滤掉最多记录的条件(子查询)放在前面,可以显著减少后续条件需要处理的数据量。 #### 三、SELECT子句中避免使用‘*’ 在SELECT子句中使用通配符`*`会降低查询性能。这是因为Oracle需要查询数据字典来...
- 多表查询的查询语句中,选择最有效率的表名顺序,Oracle解析器对表解析从右到左,所以记录少的表放在右边。 - 尽量少使用`COMMIT`语句提交事务,可以及时释放资源、解锁、释放日志空间、减少管理费用。 - 在...
2. **示例**:比如查询`SELECT * FROM EMP WHERE SAL > 50000 AND JOB = 'MANAGER' AND 25 (SELECT COUNT(*) FROM EMP WHERE MGR = E.EMP_NO)`,如果将`SAL > 50000`放在前面,则可以在早期过滤掉大部分记录,从而...
2. **WHERE子句的连接顺序**:Oracle自下而上解析WHERE子句,所以应将能过滤掉最多记录的条件放在最后。这有助于优化查询计划,使得更早地缩小数据集范围。例如,将子查询或更严格的条件置于最后通常能得到更好的...
当检查某条记录是否在另一查询结果中存在时,使用EXISTS通常比IN更高效,因为EXISTS只关心是否存在匹配,不关心匹配的数量。 **10. 用NOT EXISTS替代NOT IN** 类似地,对于否定条件,NOT EXISTS也通常优于NOT IN,...
他认为对于SQL的学习是永无止境的,相信每一个查询Oracle数据库的人都需要精通SQL语言,才能写出高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7...
### DBA对Oracle SQL编写规范的总结 #### 一、引言 在Oracle数据库开发过程中,遵循一套标准化的SQL编写规范对于提升代码质量、增强可读性和可维护性至关重要。本文档由一位经验丰富的数据库管理员(DBA)撰写,旨在...