mysql小记,分组,排序

业务,有一个字表,还有n个子表,然后首先按照主表的修改时间排序,

在按照因为好多业务表都是JOIN方式关联的也就是说 Join之后就没有主子表这一说了,但是呢它还想要如下这种展示的方式

 

也就是说先按照部门来进行分组,然后在按照项目的修改时间来进行排序 那假设这个部门有01,02,03三个项目

如果某个部门的01项目更改了,那之后的02,03也要跟着排在01后面,也就是最后修改的,要放在前面排序,但是同时用户也能在页面按照项目编号之类的进行排序  

而如果03项目修改了,就要结果是03, 01, 02这样的结果

那首先它就不能单独的按照修改时间排了. 也就是说只能先对,部门,还有项目信息进行分组查询,

也就先写了个视图  

SELECT
	max( `a`.`update_date` ) AS `MAX_DATE`,
	`pro`.`id` AS `id`,
	`bduse`.`user_id` AS `user_id`,
	`pro`.`project_num` AS `project_num`,
	`pro`.`project_name` AS `project_name`,
	`pro`.`shoud_deposit_type` AS `shoud_deposit_type`,
	`pro`.`project_leader_uid` AS `project_leader_uid`,
	`pro`.`pro_deposit_status` AS `pro_deposit_status`,
	`empee`.`office_name` AS `office_name` 
FROM
	(((
				`bd_deposit_info` `a`
				JOIN `bd_project` `pro` ON ((
						`a`.`project_id` = `pro`.`id` 
					)))
			JOIN `js_sys_office` `empee` ON ((
					`pro`.`dept_id` = `empee`.`office_code` 
				)))
		JOIN `bd_project_user` `bduse` ON ((
				`a`.`project_id` = `bduse`.`project_id` 
			))) 
WHERE
	((
			`a`.`status` = '0' 
			) 
	AND ( `pro`.`status` = '0' )) 
GROUP BY
	`pro`.`id`,
	`pro`.`project_num`,
	`pro`.`project_name`,
	`pro`.`shoud_deposit_type`,
	`pro`.`project_leader_uid`,
	`bduse`.`user_id`,
	`empee`.`office_name`

先把要的信息,进行分组,然后在进行查询的时候join这张表就做出了效果

SELECT
	*
FROM
	bd_deposit_info a
	JOIN bd_thebidder thebidder ON a.bidder_id = thebidder.id 
	#这里直接JOIN了视图 
	JOIN bd_project_depositshow_v pro ON a.project_id = pro.id 
WHERE
	a.deposit_state = '2' 
	AND a.STATUS = '0' 
	AND pro.user_id = 'system' 
	AND thebidder.STATUS = '0' 
	AND pro.pro_deposit_status = '0' 
ORDER BY 
	#这里先对视图里面分完组的结果进行排序 
	pro.MAX_DATE DESC,
	#在根据要查询的内容进行排序(是从前台传过来的条件)
	a.update_date DESC 
	LIMIT 20;

目前只能想到这样解决了,先记着,日后成为大神了,看看能不能在优化一下哈哈

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值