希望你过得愉快。 我遇到了一个问题。
在数据库中,使用distinct是无效的,并且会造成许多超时问题。
所以在一个简单的例子中我有......
select distinct first_value(e.error_message) over (order by create_date desc)
from database e
哪一个错误消息按最新排序的结果,它是同类中的第一个值,现在当我运行它需要大约.8秒这也不错,但问题是,加入和制作这个查询更大,做的不仅仅是检索错误将是一个问题。
因此,如果我执行以下查询...
select first_value(e.error_message) over (order by create_date desc)
from database e
此查询大约需要0.4秒,但问题只是想要给出的第一个项目。我该怎么做,我不知道具体的行号。
谢谢大家。
* 编辑
只是为了让每个人都知道,使用Rob的解决方案使我的查询更有效率尝试不要在可能时使用DISTINCT !!!!
答案 0 :(得分:5)
select max(e.error_message) keep (dense_rank last order by create_date)
from database e
编辑:以下是LAST function
文档的链接按create_date排序时选择最后一条错误消息。
答案 1 :(得分:2)
你可以包装选择:
SELECT *
FROM (
select first_value(e.error_message) over (order by create_date desc) from database e
)
WHERE rownum < 2;
OR
SELECT UNIQUE
val
FROM (
select first_value(e.error_message) over (order by create_date desc) as val
from database e
);