表(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字段
方法二:利用distinct去除重复项并取得id
SELECT distinct point_name,x,y,h,xianlu_id,biaod_id,max(id) from kzw WHERE xianlu_id = "&xianlu_id& " ORDER BY point_name ASC
******************************************************************
例:
select a,b,c,d,e from table group by a,b,c,d
肯定是错得了,不过有时候业务需要,不能根据e分组。
这个时候就可以:select a,b,c,d,sum(case when e like '%*%' then 1 else then 0 end) group by a,b,c,d,e这里要根据e的情况而定,只适合部分需求
另外
可以先用function将要获取的值获取,然后 select a.* from table(function()) as a group by .....