如何在不使用IN运算符的情况下编写查询?

时间:2013-10-26 05:05:10

标签: sql oracle oracle10g

我想在查询下面不使用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 ;

1 个答案:

答案 0 :(得分:3)

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

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

另外,为什么要提供索引提示?这真的是必要的(当然不是要问一个问题)。整个问题都是试图猜测查询优化器。