问题描述
当使用相同的表别名来引用联接列表中的表或视图以及 “与” 视图时,优先考虑前者。
这是意料之中的吗?如果是这样,为什么?
示例:
=
链接中还提供了其他详细信息。
请检查和帮助。
谢谢。
这是意料之中的吗?如果是这样,为什么?
示例:
=
with t1 as (select 'DUMMY' X from dual) select t2.* from bibtest t1, bibtest_2 t2 where t1.a = t2.a;复制
链接中还提供了其他详细信息。
请检查和帮助。
谢谢。
专家解答
在编写查询时,可以使用与其他架构对象名称匹配的别名:
在上面的第一个查询中,表别名与我们创建的视图的名称匹配。数据库将此解析为表,因为视图isn't referenced in a from clause。因此它超出了范围。
将与子句视为定义即时视图。因此,即使表别名与命名子查询匹配,您也没有访问查询本身中的CTE。因此,查询永远不会引用CTE的内容。
例如,下面的查询使用与表别名同名的what子句,但主要查询doesn't select from the CTE。所以就像架构中的任何其他视图一样,数据库会忽略其内容,并且查询不会读取dual:
如果您确实访问了CTE,则数据库将不再能够解决该查询并引发错误:
create table t as select level c1 from dual connect by level <= 5; create or replace view vw as select count(*) c from t; select vw.* from t vw; C1 1 2 3 4 5 select * from vw; C 5复制
在上面的第一个查询中,表别名与我们创建的视图的名称匹配。数据库将此解析为表,因为视图isn't referenced in a from clause。因此它超出了范围。
将与子句视为定义即时视图。因此,即使表别名与命名子查询匹配,您也没有访问查询本身中的CTE。因此,查询永远不会引用CTE的内容。
例如,下面的查询使用与表别名同名的what子句,但主要查询doesn't select from the CTE。所以就像架构中的任何其他视图一样,数据库会忽略其内容,并且查询不会读取dual:
set serveroutput off with t1 as ( select dummy from dual ) select * from t t1; C1 1 2 3 4 5 select * from dbms_xplan.display_cursor( format => 'BASIC LAST' ); ---------------------------------- | Id | Operation | Name | ---------------------------------- | 0 | SELECT STATEMENT | | | 1 | TABLE ACCESS FULL| T | ----------------------------------复制
如果您确实访问了CTE,则数据库将不再能够解决该查询并引发错误:
with t1 as ( select dummy from dual ) select * from t t1, t1; ORA-00918: column ambiguously defined复制
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
555次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
478次阅读
2025-04-18 14:18:38
Oracle SQL 执行计划分析与优化指南
Digital Observer
453次阅读
2025-04-01 11:08:44
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
451次阅读
2025-04-08 09:12:48
墨天轮个人数说知识点合集
JiekeXu
447次阅读
2025-04-01 15:56:03
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
440次阅读
2025-04-22 00:20:37
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
416次阅读
2025-04-22 00:13:51
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
416次阅读
2025-04-20 10:07:02
Oracle 19c RAC更换IP实战,运维必看!
szrsu
395次阅读
2025-04-08 23:57:08
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
365次阅读
2025-04-17 17:02:24