比如一个表
我想从这个表里面不同cate_id提取title出来,每个cate_id提取2条记录
大家有什么好办法?
这个需要在PostgreSQL中,可以使用窗口查询来满足需求:
digoal=# create table tbl(id int, cate_id int, title text);
CREATE TABLE
digoal=# insert into tbl values (1,1,'a'),(2,1,'b'),(3,2,'c'),(4,2,'d'),(5,2,'e'),(6,3,'f'),(7,3,'g');
INSERT 0 7
digoal=# select * from tbl;
id | cate_id | title
----+---------+-------
1 | 1 | a
2 | 1 | b
3 | 2 | c
4 | 2 | d
5 | 2 | e
6 | 3 | f
7 | 3 | g
(7 rows)
digoal=# select * from (select row_number() over(partition by cate_id) rn,* from tbl) t where rn <=2;
rn | id | cate_id | title
----+----+---------+-------
1 | 1 | 1 | a
2 | 2 | 1 | b
1 | 3 | 2 | c
2 | 4 | 2 | d
1 | 6 | 3 | f
2 | 7 | 3 | g
(6 rows)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。