我是靠谱客的博主 温暖翅膀,最近开发中收集的这篇文章主要介绍SQL查询, group by后如何取第一条,如何排序,如何标记序,如何取指定第n条?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

大体场景:一个客户有多次申请时,如何取每个客户的第一次申请记录,以及指定的第n次记录?

以及如何针对客户的每次申请按指定规则排序?

一、取group by后第1条记录

方法一:

表先limit,再group by,默认会展示分组后的第一条记录,注意:

1、limit 必须得有,否则跑出来的就不都是第一条记录,limit可大于表的记录条数

2、order by 默认升序,若降序则用 order by 字段名 desc

如下:

select t.客户名,t.其他字段 
from ( select * from table order by 申请时间 limit  1000000  ) as t 
group by t.客户名 

方法二:

先取第一笔的申请时间,再找时间一致的记录,如下:

select * from table t 
left join (select 客户名,min(申请时间) as 最小申请时间 from table group by  客户名) t2 
on t.客户名=t2.客户名 
where t.申请时间=t2.最小申请时间

二、group by后 排序,标记序,及取第n笔

操作方法:

按客户名分组,按时间输出次序:
select 
if (@sortby=a.客户名,@xu:=@xu+1,@xu:=1) as xu,
@sortby:=a.客户名 as sortby,
a.*
from (select @sortby:=null,@xu:=0) x,
(select 客户名,时间,其他字段 from table
order by  客户名,时间) a

字段[xu]就是想要的结果次序;若取第n笔,随意where即可

方法解析:

1、首先要了解查询顺序:

 2、了解对变量赋值的用法

“@”后面跟变量名,可用“:=”对变量进行赋值,如下对变量xu1,xu2赋值

 3、了解如何建立自增序,

如下,因先查询from,故先对xu1,xu2赋值0,再select时做+1递增,xu1自增,xu2条件自增

 4、实操,

分组后排序,如下,需要建一个排序依据的辅助字段sortby

此方法逻辑,与excel操作类似 EXCEL如何分组排序,如何标记序,如何取指定的第n笔?_星辰大海可还好的博客-CSDN博客

最后

以上就是温暖翅膀为你收集整理的SQL查询, group by后如何取第一条,如何排序,如何标记序,如何取指定第n条?的全部内容,希望文章能够帮你解决SQL查询, group by后如何取第一条,如何排序,如何标记序,如何取指定第n条?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部