【问题标题】:SQL multiple conditons on a single column单个列上的 SQL 多个条件
【发布时间】:2019-09-01 01:47:13
【问题描述】:

我需要使用 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;

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

我想同时获取记录(表和索引)。

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

虽然我是 dba,但我不太擅长 SQL。

【问题讨论】:

  • 是否有更多的段类型(比索引和表)?

标签: sql oracle join case


【解决方案1】:

您可以在不使用连接的情况下实现您想要的,而是使用 or 条件:

SELECT
    segment_name,
    bytes
FROM
    dba_segments
WHERE
    (segment_type='INDEX' and bytes>10000000)
    OR
    (segment_type='TABLE' and bytes>20000000)

【讨论】:

    【解决方案2】:

    您不需要加入,只需将两个条件与 OR 结合起来即可

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      相关资源
      最近更新 更多