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
得到数据如下
---------------------------持续更新中---------------------------