SQL在单个列上存在多个条件

Sal*_*lih 0 sql oracle join case

我需要使用WHERE子句显示表的记录,该子句又取决于另一列的值。

例如说,从表dba_Segments中列出消耗> 200000字节的表和消耗> 100000字节的索引

以下是我尝试过的

select o1.segment_name,o1.bytes from dba_segments o1
inner join 
( select segment_name,bytes from dba_segments where segment_type='INDEX' and bytes>10000000) o2
on o1.segment_name=o2.segment_name where o1.segment_type='TABLE' and
o1.bytes>20000000;
Run Code Online (Sandbox Code Playgroud)

输出是no rows selected我相信WHERE子句互相抵消。

我想同时获得两个记录(表和索引)。

请提出实现此目标的最有效方法。

尽管我是dba,但我不太擅长SQL。

a_h*_*ame 5

您不需要加入,只需将两个条件与 OR

select segment_type, segment_name, bytes 
from dba_segments 
where (segment_type = 'INDEX' and bytes > 10000000)
   or (segment_type = 'TABLE' and bytes > 20000000);
Run Code Online (Sandbox Code Playgroud)