Reputation: 9
Id user_id Name
--- -------- ------
1 1 A
2 1 B
3 1 C
4 2 D
5 2 E
6 2 F
This is my user table and i want to fetch 2 rows in descending using user_id. I want output like.
Id user_id Name
--- -------- ------
2 1 B
3 1 C
5 2 E
6 2 F
Thanks in advance
Upvotes: 0
Views: 227
Reputation: 13509
I think you strictly need an ANCIer approach. You should try below co-related sub query -
SELECT Id, user_id, Name
FROM T T2
WHERE (SELECT COUNT(*)
FROM T T3
WHERE T2.user_id = T3.user_id
AND T2.Id <= T3.Id) <= 2
Upvotes: 0
Reputation: 1269753
Use row_number()
:
select Id, user_id, Name
from (select t.*, row_number() over (partition by user_id order by id desc) as seqnum
from t
) t
where seqnum <= 2
order by user_id, id
Upvotes: 2