MySQL 实现不同分组取不同值

简述

最近做项目过程中遇到这样一个需求:实现不同分组取不同的值(类似先排序再分组),具体需求如下:

(1)将客户按手机号进行分组;

(2)分组之后数据如果有部门A,则优先取部门A数据;

(3)如果分组数据中没有部门A的数据,则优先取先录入的数据。

先来看表结构:

解决思路

(1)实现分组,并获取分组数据中最先导入的【cphone分组+addtime时间正序】

SELECT
    cid,
    cphone,
    addtime
FROM
	(
		SELECT
			cid,
			cphone,
			addtime
		FROM
			crm_test
		ORDER BY
		addtime
	) AS a
GROUP BY
	cphone
LIMIT 0,10

(2) 分组如何优先取A部门的数据?这里想到的是:增加一个字段来区分是否是A部门,增加字段is_market(为0表示为A部门)如下图:

这样可以对is_market字段进行排序,就能够优先取A部门的数据,依照上一步来对SQL进行改写。

解决方案

(1)MySQL5.5版本

-- MySQL5.5
SELECT * FROM ( SELECT cid,cphone,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值