oracle – 毗连前提下的Rownum
发布时间:2021-04-01 03:27:10 所属栏目:站长百科 来源:网络整理
导读:最近我修复了一些错误:在毗连前提下有rownum. 这样的工作:在t1.id = t2.id和rownum 2上左毗连t1.因此无论“左毗连”怎样,它都应该只返回一行. 当我进一步研究这个时,我意识到我不大白Oracle如安在“左毗连”前提下评估rownum. 让我们建设两个样本表:主表
最近我修复了一些错误:在毗连前提下有rownum. 这样的工作:在t1.id = t2.id和rownum< 2上左毗连t1.因此无论“左毗连”怎样,它都应该只返回一行. 当我进一步研究这个时,我意识到我不大白Oracle如安在“左毗连”前提下评估rownum. create table MASTER ( ID NUMBER not null,NAME VARCHAR2(100) ) ; alter table MASTER add constraint PK_MASTER primary key (ID); prompt Creating DETAIL... create table DETAIL ( ID NUMBER not null,REF_MASTER_ID NUMBER,NAME VARCHAR2(100) ) ; alter table DETAIL add constraint PK_DETAIL primary key (ID); alter table DETAIL add constraint FK_DETAIL_MASTER foreign key (REF_MASTER_ID) references MASTER (ID); prompt Disabling foreign key constraints for DETAIL... alter table DETAIL disable constraint FK_DETAIL_MASTER; prompt Loading MASTER... insert into MASTER (ID,NAME) values (1,'First'); insert into MASTER (ID,NAME) values (2,'Second'); commit; prompt 2 records loaded prompt Loading DETAIL... insert into DETAIL (ID,REF_MASTER_ID,1,'REF_FIRST1'); insert into DETAIL (ID,'REF_FIRST2'); insert into DETAIL (ID,NAME) values (3,'REF_FIRST3'); commit; prompt 3 records loaded prompt Enabling foreign key constraints for DETAIL... alter table DETAIL enable constraint FK_DETAIL_MASTER; set feedback on set define on prompt Done. 然后我们有这个查询: select * from master t left join detail d on d.ref_master_id=t.id 功效集是可猜测的:我们拥有主表中的全部行和具体信息表中与此前提匹配的3行d.ref_master_id = t.id. Result Set 然后我在毗连前提中添加了“rownum = 1”,功效是一样的 select * from master t left join detail d on d.ref_master_id=t.id and rownum=1 最风趣的是我配置了“rownum< -666”并再次获得了沟通的功效! select * from master t left join detail d on d.ref_master_id=t.id and rownum<-666. 因为功效集,我们可以嗣魅这个前提在具体信息表中被评估为3行的“真”.但假如我行使“内部联接”,统统都应该云云. select * from master t join detail d on d.ref_master_id=t.id and rownum<-666. 这个查询不返回任何行,由于我无法想象rownum会少于-666 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |