mysql 相同姓名但是不同人的排序号

本文介绍了一个复杂的SQL查询案例,该查询使用CASE WHEN语句、find_in_set函数和变量来处理银行账户信息,包括账户名、生日和手机号码的匹配与分组。通过对这些字段的精细操作,实现了数据的有效筛选与整理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

select
CASE when @bankAccountName=a.bankAccountName and (
(find_in_set(a.birthday,@allbirthday)>0 and find_in_set(a.mobile,@allmobile)>0)
or (a.birthday='0001-01-01' and find_in_set(a.mobile,@allmobile)>0)
)
then -1 else 0 end as delete_row
,find_in_set(a.birthday,@allbirthday),find_in_set(a.mobile,@allmobile)
,@group_row:=case
when @bankAccountName=a.bankAccountName and find_in_set(a.birthday,@allbirthday)=0 and a.birthday!='0001-01-01' then @group_row+1
when @bankAccountName=a.bankAccountName and (find_in_set(a.birthday,@allbirthday)>0 or (a.birthday='0001-01-01' and find_in_set(a.mobile,@allmobile)=0)) then @group_row
else 1 end as groupRow
,@allbirthday:=case when @bankAccountName=a.bankAccountName then concat(@allbirthday,',',a.birthday) else a.birthday end as allbirthday
,@allmobile:=case when @bankAccountName=a.bankAccountName then concat(@allmobile,',',a.mobile) else a.mobile end as allmobile
,@bankAccountName:=a.bankAccountName as bankAccountName
,a.*
from t11 a ,(select @group_row:=1, @bankAccountName:='',@allbirthday:='',@allmobile:='') as b
ORDER BY a.bankAccountName,a.birthday desc,a.mobile
;

 

参考:https://www.cnblogs.com/zhanglixuan/p/10651275.html

转载于:https://www.cnblogs.com/cathyxiao/p/11434866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值