数据库去重和查询指定记录区间数据

PostgreSQL数据库的去重与查询制定区间的记录数

1、查询前N条记录数

在PostgreSQL数据库数据库中有一个limit函数用来查询前多少条

SELECT * from  ag_actv  LIMIT 1050

我们得到是 ag_actv 表中的1050行记录

2、查询指定区间的记录数(如1000-1050)

顺着这个思路的话我们就可得到指定区间的记录数,比如我们要查询1000到1050条之间的50条记录,我们可以先获取1050条就作为一个临时表,再从此表中查询,并让其主键id不等于前1000条记录中的id

SELECT * from  (SELECT * from ag_actv   LIMIT 1050) sq WHERE sq.seq_num  not in  (SELECT seq_num  from ag_actv  LIMIT 1000)

3、去重查询

1、所有数据全部重复的话直接使用DISTINCT去重

2 如果是主键id不同,只是记录中的某几个数据相同时,我们就需要采用分组统计来实现去重的操作



上图中sid为主键

我们发现造成重复的是后面name,sex,class三列。

于是我们就用分组函数以这三列作为分组的条件

SELECT max(sid),name,sex,class FROM studentWHERE 1=1  GROUP BY name,sex,class 于是乎得到如下结果集

Oracle数据库的去重与查询指定区间的记录数

1、       查询前N条记录(ROWNUM<=100)

select * FROM HVDN WhereROWNUM<=100

2、       查询指定的记录数(1000-1050)条记录数

思路:首先查询表中前1050条记录,并显示出与之对应的行数,和信息数(注意:表一定要取别名,并用h.*来去表中的信息)

SELECT * from (SELECT rownum as num,h.* FROM HVDN h Where ROWNUM<=1050)  ss

where ss.num>1000 and ss.num<=1050

去重的方法所有数据库基本相同,找出重复的列在根据这些列(用GROUP BY函数)分组。

可能不一定是最好的方法,但是基本可实现,如有更好的方法请加以指正。


猜你喜欢

转载自blog.csdn.net/weixin_42324471/article/details/80789828