开发常用-SQL篇

row_number() over()函数的使用
row_number() over(partition by 字段名 order by 字段名)

\\某个产品要给注册的客户发送短信,想要在注册流水表里筛选出同一手机号码最新注册的记录
SELECT * FROM CFC_SCSMSSEND

得到如下记录(红色标记为实际想要得到的数据)
分别是ID为 90,91,92的数据
在这里插入图片描述
使用row_number() over(partition by phone order by createtime)

\\某个产品要给注册的客户发送短信,想要在注册流水表里筛选出同一手机号码最新注册的记录
SELECT
A.* ,
ROW_NUMBER() OVER(PARTITION BY phone ORDER BY createtime DESC) AS RN
FROM  
CFC_SCSMSSEND A

得到如下查询结果。
该函数按照partition by分组,在分组里按照order by 排序 并给其加上一个排序的序号RN
在这里插入图片描述
下面只要将RN里取出值为1的数据,就是我们需要的筛选数据

\\某个产品要给注册的客户发送短信,想要在注册流水表里筛选出同一手机号码最新注册的记录
SELECT * FROM (
	SELECT
	A.* ,
	ROW_NUMBER() OVER(PARTITION BY phone ORDER BY createtime DESC) AS RN
	FROM  
	CFC_SCSMSSEND A)B
WHERE B.RN = 1

得到数据如下
在这里插入图片描述
---------------------------持续更新中---------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值