mysql-分组获取前几个和分组最大值

分组前几个

根据某个字段进行分组获取前几个

select a.* from data a where 3 > (select count(*) from data where brand_id = a.brand_id 
and total_num > a.total_num ) order by a.brand_id, a.total_num desc;
SELECT a.* FROM `t_user` a where 2> (select count(*) from t_user where `name`=a.`name` 
and `password`>a.`password`) ORDER BY `name`

SELECT	g.* FROM tt_task_progress g WHERE 1>(SELECT COUNT(*) FROM tt_task_progress WHERE task_id = g.`task_id` AND user_id = g.user_id AND `update_time`>g.`update_time`)

但是当数据大的时候性能很差

分组最大值

## 表单中每个分组都是取最大值
采用b来先获取到都是最大值,然后a表去联表
```sql
SELECT
	a.* 
FROM
	crm_market_operate_record a
	INNER JOIN (
SELECT
	business_id,
	max( create_time ) AS create_time 
FROM
	crm_market_operate_record 
WHERE
	business_type = 1 
	AND pool_entry_method IN ( 1, 2, 3 ) 
	AND is_delete = 0 
GROUP BY
	business_id 
	) b ON a.business_id = b.business_id 
	AND a.create_time = b.create_time
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值