问:下面显示的只是我数据库的一部分,其中有更多的表、列以及属性,所以重新设计schema已经不太可能了。希望您能够为我提供一些帮助。
create table my_master (id number,ref number); create table my_detail (id number,txt varchar2(8)); insert into my_master (id,ref) values (1,1); insert into my_master (id,ref) values (1,2); insert into my_master (id,ref) values (1,3); insert into my_master (id,ref) values (2,1); insert into my_master (id,ref) values (2,4); insert into my_master (id,ref) values (2,5); insert into my_master (id,ref) values (3,6); insert into my_master (id,ref) values (3,7); insert into my_master (id,ref) values (4,7); insert into my_detail (id,txt) values (1,’HELLO1′); insert into my_detail (id,txt) values (2,’HELLO2′); insert into my_detail (id,txt) values (3,’HELLO3′); insert into my_detail (id,txt) values (4,’HELLO4′); insert into my_detail (id,txt) values (5,’HELLO5′); insert into my_detail (id,txt) values (6,’HELLO5′); insert into my_detail (id,txt) values (7,’HELLO6′); SQL> select t1.id,t1.ref,t2.txt from my_master t1,my_detail t2 where t1.ref = t2.id; ID REF TXT ———- ———- ——– 1 1 HELLO1 1 2 HELLO2 1 3 HELLO3 2 1 HELLO1 2 4 HELLO4 2 5 HELLO5 3 6 HELLO5 3 7 HELLO6 4 7 HELLO6 9 rows selected. |
现在我希望通过一个查询语句解决以下问题:
1、我想要找到所有的ID列,其中包含一个且仅包含一个“HELLO6”的值,比如ID=4;
2、我想要找到所有的ID列,其中TXT=“HELLO5”AND“HELLO6”,比如ID=3.
答:想要得到你要的结果,可以有多种方式,但是只有一种方式是相对直接的,希望我能在这里为你解释清楚。同时,你要注意必须在my_detail(参考txt)上建立索引,让内部查询性能更好,此外还需要在my_master上建立恰当的索引。
1)针对第一个问题:
SQL> select id 2 from my_master 3 where id in 4 ( 5 select t1.id 6 from my_master t1, my_detail t2 7 where t1.ref = t2.id 8 and t2.txt = ‘HELLO6’ 9 ) 10 group by id 11 having count(*) = 1; ID ————— 4 |
2)针对第二个问题:
SQL> select id 2 from 3 ( 4 select t1.id 5 from my_master t1, my_detail t2 6 where t1.ref = t2.id 7 and t2.txt IN (‘HELLO5’, ‘HELLO6’) 8 ) 9 group by id 10 having count(*) = 2 ; ID ————— 3 |
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
翻译
相关推荐
-
Collaborate 18大会:了解甲骨文云数据库和应用的进展
在Collaborate 18大会即将举行时,我们会发现,甲骨文用户社区的技术变化会略高于平常水平。 由独立甲 […]
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
Oracle TNS 错误:管理员旷日持久的战斗
TNS经常给IT管理员带来麻烦,而且很难定位。尤其是在Oracle数据库中。本文将介绍如何避免这些常见错误。
-
DBA支招:如何实现Oracle EBS 12.2.5升级
那些对于是否要将EBS进行升级持观望态度的Oracle数据库管理员们可以从一家研究公司获得一些启示。