merchant_name商户名称分组及时间倒序排序

最近项目上遇到一个这样的需求,优惠券管理,优惠券里面有涉及到商户信息,要以商户名称分组,时间倒序排序。添加优惠券时间倒序排序,以最新的数据显示在最前面(这里也要是商户组的最新一条显示在最前)。

根据产品经理的要求,写的原sql是这样的,如下:

SELECT b.name as merchant_name,`a`.`update_time`,`b`.`is_qrcode`,b.status as mstatus,`a`.* 
FROM `***_*****_discount` `a`
INNER JOIN `***_******_merchant` `b` ON `a`.`merchant_id`=`b`.`id` 
WHERE `a`.`status` = '0' AND `a`.`id` = '142' 
ORDER BY `b`.`name` DESC,`a`.`update_time` DESC;

执行完看一下效果是这样了,商户信息一起展示了,没想到的是,添加一条新的优惠券信息,你们能想到会是怎样的展示效果吗?万万没想到,它是显示在相应的商户分组的第一条的地方显示,并不是显示在最前面第一条,所以又开始研究,这个sql应该怎样写呢?经过一番修改整理修改整理之后,终于功夫不负有心人,写出来了。

大家想知道最终结果吗?

O(∩_∩)O哈哈~,噔噔噔噔 ,O(∩_∩)O哈哈~

别着急,接下来就给大家展示最终sql语句:

SELECT
b.id,b.name as merchant_name,`b`.`is_qrcode`,b.status as mstatus,`a`.*
FROM `*******表名` `a` 
INNER JOIN `*****表名` `b` ON `a`.`merchant_id`=`b`.`id` 
INNER JOIN
(select max(`a`.`update_time`) addtime,`a`.`merchant_id`,a.name  FROM `*****表名` a group by `a`.`merchant_id`) t
on `a`.`merchant_id`= `t`.`merchant_id`
WHERE `a`.`status` = '0' AND `a`.`id` = '11' 
ORDER BY t.addtime desc,t.merchant_id DESC,`a`.`update_time` DESC

上面sql语句才是正解。

上面sql才是以商户名称分组并且以最新数据显示最前面的sql语句。

merchant_name商户名称分组及时间倒序排序_第1张图片 标题

 

搞定完成。

如果大家有更好的实现方式,多多益善,大家不要吝啬哦,共同进步,共同学习!!

你可能感兴趣的:(sql,mysql相关知识,thinkphp,sql,数据库,database)