我有一个这样的专栏
total name gender
2 Mike male
2 Dion male
2. Shinta female
2 Sarah female
10 Pio male
10 Olive female
10 Steve male
80 Yuri female
80 Kio male.
80 Doni male
80 Dora female
80 Nobi male.
80 Hiou male
如何将每个总数仅限制为2人?我从创建的View中获取了该表并加入了它,并获得了该表,但如果我限制,它只限制顶部的第一行,但不是每个总数我真的想要每2个人获得总数2,总共10个得到2个人,80个得到2个人,是可能的???
你可以尝试使用row_number()
select * from
(
select *, row_number() over(partition by total order by null) as rn
from tablename
)A where rn<=2
窗口函数通常用于此:
select t.*
from (select t.*, row_number() over (partition by total order by total) as seqnum
from tempview t -- or whatever your logic is here
) t
where seqnum <= 2;
当然,窗口函数仅在最新版本的SQLite中可用。
在旧版本的SQLite中,这很痛苦,但这应该有效:
select t.*
from tempview t
where t.name in (select t2.name
from tempview t2
where t2.total = t.total
limit 2
);
这假定给定的total
不重复名称。