sql中分组,除了group by之外的用法

表(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 .....


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值