现在我有一张表。
字段分别是
id title iphone agentid startdate
我想要抽出info表关于agentid字段的关于startdate排序的最后3条数据
但是显示出来的有问题。sql语句如下。求高人指点
SELECT a.id,a.title,a.iphone ,a.agentid,a.startdate
FROM info a
where a.hide_flag = 1
GROUP BY a.id,a.title,a.iphone ,a.agentid,a.startdate
HAVING COUNT(a.agentid) <=3
ORDER BY a.startdate desc
------解决思路----------------------
select a.id,a.title,a.iphone ,a.agentid,a.startdate from(
select *,row_number() over(partition by agentid order by startdate desc) as rId from info
) as a where a.rId<=3
------解决思路----------------------
SELECT a.id,
a.title,
a.iphone,
a.agentid,
a.startdate
FROM (SELECT *,
ROW_NUMBER() OVER (PARTITION BY agentid
ORDER BY startdate DESC
) n
FROM info
WHERE hide_flag = 1
) a
WHERE n <= 3
ORDER BY agentid, n