-2

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

1 回答 1

3

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

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

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

于 2013-10-26T05:21:22.323 回答