我不得不按一些列来排序我的数据,这样一些特定的值首先出现。因此,对于这样的查询...Oracle SQL的情况下,为了排序
SELECT rtrim(taskid) into v_taskid FROM tasks
where
/* some where clausers */
and rownum = 1
...我已经根据它case when
,但什么困扰我的是三个嵌套选择我现在有:
SELECT rtrim(taskid) into v_taskid FROM tasks where taskid in (
select taskid from (
select taskid,
case when taskuser like '%myuser%'
then 0
else 100
end as ordervalue
FROM tasks
where
/* some where clausers */
order by ordervalue
)
)
and rownum = 1
性能方面,我认为它不应该是一个问题,但它看起来像一种意大利面条...有什么办法可以将case-when
纳入where
条款吗?
此处不需要分析查询,并会影响性能。 – 2010-03-11 12:56:49