使用DISTINCT如何去掉重复记录,并查询所有字段?
表(kzw):
id xianlu_id point_name x y h biaod_id
1 19 草桥 314594.654 494252.073
2 19 草桥 314594.654 494252.073
3 19 北宫门 315032.232 492997.054
4 19 北宫门 315032.232 492997.054
5 19 北宫门 315032.232 492997.054 1
6 18 北三环路口 311013.473 496936.988 1
7 18 北三环路口 311013.473 496936.988
8 18 北三环路口 311013.473 496936.988 40.77
筛选结果:
id xianlu_id point_name x y h biaod_id
1 19 草桥 314594.654 494252.073
3 19 北宫门 315032.232 492997.054
5 19 北宫门 315032.232 492997.054 1
6 18 北三环路口 311013.473 496936.988 1
7 18 北三环路口 311013.473 496936.988
8 18 北三环路口 311013.473 496936.988 40.77
数据表规律:
id(自动编号),xianlu_id(数字),point_name(文本),x(文本),y(文本),h(文本),biaod_id(文本)。其中xianlu_id,point_name,x,y,h,biaod_id六个字段唯一确定一个数,为联合主键
实现的效果:
通过xianlu_id,point_name,x,y,h,biaod_id六个字段共同作用,去除重复项,但是要保证能查询出id字段
我的方法:
方法一:利用distinct去除重复项
SELECT distinct point_name,x,y,h,xianlu_id,biaod_id from kzw WHERE xianlu_id = "&xianlu_id&" ORDER BY point_name ASC
结果:
显示记录正确,但是没有办法查询出id字段
方法二:建立子查询
select * from kzw a where not exists(select 1 from kzw where id > a.id and point_name = a.point_name and x= a.x and y = a.y and h = a.h and xianlu_id = a.xianlu_id and biaod_id = a.biaod_id) and xianlu_id = "&xianlu_id&" ORDER BY point_name ASC
结果:
能查询出id字段,但显示记录仍然有很多重复,基本没有筛选
请各位大侠帮小妹指指招,看看是哪个地方出了问题?
id xianlu_id point_name x y h biaod_id
1 19 草桥 314594.654 494252.073
2 19 草桥 314594.654 494252.073
3 19 北宫门 315032.232 492997.054
4 19 北宫门 315032.232 492997.054
5 19 北宫门 315032.232 492997.054 1
6 18 北三环路口 311013.473 496936.988 1
7 18 北三环路口 311013.473 496936.988
8 18 北三环路口 311013.473 496936.988 40.77
筛选结果:
id xianlu_id point_name x y h biaod_id
1 19 草桥 314594.654 494252.073
3 19 北宫门 315032.232 492997.054
5 19 北宫门 315032.232 492997.054 1
6 18 北三环路口 311013.473 496936.988 1
7 18 北三环路口 311013.473 496936.988
8 18 北三环路口 311013.473 496936.988 40.77
数据表规律:
id(自动编号),xianlu_id(数字),point_name(文本),x(文本),y(文本),h(文本),biaod_id(文本)。其中xianlu_id,point_name,x,y,h,biaod_id六个字段唯一确定一个数,为联合主键
实现的效果:
通过xianlu_id,point_name,x,y,h,biaod_id六个字段共同作用,去除重复项,但是要保证能查询出id字段
我的方法:
方法一:利用distinct去除重复项
SELECT distinct point_name,x,y,h,xianlu_id,biaod_id from kzw WHERE xianlu_id = "&xianlu_id&" ORDER BY point_name ASC
结果:
显示记录正确,但是没有办法查询出id字段
方法二:建立子查询
select * from kzw a where not exists(select 1 from kzw where id > a.id and point_name = a.point_name and x= a.x and y = a.y and h = a.h and xianlu_id = a.xianlu_id and biaod_id = a.biaod_id) and xianlu_id = "&xianlu_id&" ORDER BY point_name ASC
结果:
能查询出id字段,但显示记录仍然有很多重复,基本没有筛选
请各位大侠帮小妹指指招,看看是哪个地方出了问题?
...全文
相关推荐
数据库试题
选择题解析**题目:在 SQL SELECT 语句查询中,要去掉查询结果中的重复记录,应该使用哪个关键字?A. NOT NULL B. DISTINCT C. UNIQUE D.
SQL语句去掉重复记录,获取重复记录
去掉重复记录在数据库中,重复记录是指具有相同值的记录。去掉重复记录的目的是为了确保数据的唯一性和正确性。在SQL中,我们可以使用DISTINCT关键字来去掉重复记录。
使用distinct在mysql中查询多条不重复记录值的解决办法
但是,这个关键字只能返回它的目标字段,而无法返回其它字段。这使得在查询多条不重复记录值时,distinct 并不能完全解决问题。
解析mysql中:单表distinct、多表group by查询去除重复记录
首先,**单表查询中的DISTINCT**,用于从单个表中去除重复的记录。当你只想获取某个字段的不重复值时,可以使用`SELECT DISTINCT 字段名 FROM 表名`。
Oracle查询重复数据与删除重复记录方法
使用GROUP BY方法**删除重复记录示例**使用`GROUP BY`删除重复记录时,可以按照`num`字段分组并删除所有重复记录。


