一个表test有字段aaa,数据如下:
111
222
222
333
111
111
111
222
222
333
444我想实现,如果有重复记录只取重复数据的前三条,如果不重复就直接取出,按照上面的数据应该取出:
111
222
222
333
111
111
222
333
444顺序没有要求
111
222
222
333
111
111
111
222
222
333
444我想实现,如果有重复记录只取重复数据的前三条,如果不重复就直接取出,按照上面的数据应该取出:
111
222
222
333
111
111
222
333
444顺序没有要求
select aa.*
from(
select a.*,row_number() over(partition by aaa order by aaa) rn
from test)
where aa.rn<=3
FROM (SELECT a.*,ROW_NUMBER () OVER (PARTITION BY aaa ORDER BY id DESC)
rn
FROM tcsfodder a)
WHERE rn <= 10;