我想在查询下面不使用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 ;
答案 0 :(得分:3)
是的,您可以将IN条件转换为SELECT DISTINCT q_event_seq ...然后加入它。
但你为什么要这样?这就是数据库正在做的事情。删除IN的理由是什么?
另外,为什么要提供索引提示?这真的是必要的(当然不是要问一个问题)。整个问题都是试图猜测查询优化器。