我在我的应用程序中使用自定义分页,所以每次我从我的数据库中获取最新的10条记录并显示在我的应用程序上。
我的问题是
我想在顶部获取最新的用户信息。
在获取信息时,每个用户都有多行,因此我使用dense_rank函数对这些记录进行分组。
例如
RRowNo UserID Location CreatedOn 1 Avsih Delhi 06-02-2014 1 Avsih Mumbai 06-02-2014 1 Avsih Kerala 06-02-2014 2 Nimmi UP 06-02-2014 3 Rahul1 Delhi 06-02-2014 4 Rahul2 Mumbai 06-02-2014 5 Rahul3 Kerala 06-02-2014 6 Rahul4 UP 06-02-2014 7 Rahul5 Delhi 06-02-2014 8 Rahul6 Mumbai 06-02-2014 9 Rahul7 Kerala 06-02-2014 10 Rahul8 UP 06-02-2014 11 Rahul9 UP 07-02-2014
考虑我的表名是emp
我的查询是
select *
from (
select dense_rank() over (order by userid asc) as rowno,
from emp
) as tab
where rowno>='1' and rowno<='10'
order by Createdon desc
Rahul9是我的最新纪录(即必须是07/02/2014) 我希望该记录是最顶级的。但是通过使用该查询我不能获取 所以请帮助如何修改此查询。
答案 0 :(得分:1)
我认为您希望首先使用最新createdon
的用户。假设createon
对所有用户都相同,请尝试:
select *
from (select dense_rank() over (order by createdon desc, userid asc) as rowno
from emp
) tab
where rowno >= 1 and rowno <= 10
order by Createdon desc;
答案 1 :(得分:0)
子查询,例如
select * from ( select dense_rank() over (order by userid asc) as rowno, * from emp
inner join (select userid,MAX(CreatedOn) AS MaxCreatedOn FROM emp GROUP BY userid) a ON a.userid = emp.userid
) as tab where rowno>='1' and rowno<='10' order by a.MaxCreatedon desc
你在哪里获得每个用户的最新日期,然后加入那可能会有效?