【问题标题】:how to write the query without using IN operator?如何在不使用 IN 运算符的情况下编写查询?
【发布时间】:2013-10-26 05:05:09
【问题描述】:

我想在下面的查询中不使用 IN 运算符:

select q_event_seq, rownum.....
from notify_request 
where q_event_seq in (
    select q_event_seq 
    FROM ( 
        SELECT q_event_seq, DENSE_RANK() over (order by q_start, contact_gid) digest_rank 
        FROM NOTIFY_REQUEST
        WHERE q_state = 'QUEUED' 
        order by digest_rank
        )
    where digest_rank <= 10
    ) 
ORDER BY q_start, contact_gid ;

【问题讨论】:

  • 这是作业还是拼图?

标签: sql oracle oracle10g


【解决方案1】:

是的,您可以将您的 IN 条件转换为 SELECT DISTINCT q_event_seq ...然后加入它。

但你为什么要这样做?无论如何,这就是数据库正在做的事情。删除 IN 的理由是什么?

另外,你为什么要给出索引提示?这真的有必要吗(当然不是为了问问题)。整个问题都带有试图猜测查询优化器的味道。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2019-08-31
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多